Home

Awesome

<br />

<p align="center"> Twitter clone built in Next.js + TypeScript + Tailwind CSS using Cloud Firestore and Storage </p>

Preview 🎬

https://user-images.githubusercontent.com/55032197/201472767-9db0177a-79b5-4913-8666-1744102b0ad7.mp4

Features ✨

Tech 🛠

Development 💻

Here are the steps to run the project locally.

  1. Clone the repository

    git clone https://github.com/ccrsxx/twitter-clone.git
    
  2. Install dependencies

    npm i
    
  3. Create a Firebase project and select the web app

  4. Add your Firebase config to .env.development. Note that NEXT_PUBLIC_MEASUREMENT_ID is optional

  5. Make sure you have enabled the following Firebase services:

    • Authentication. Enable the Google sign-in method.
    • Cloud Firestore. Create a database and set its location to your nearest region.
    • Cloud Storage. Create a storage bucket.
  6. Install Firebase CLI globally

    npm i -g firebase-tools
    
  7. Log in to Firebase

    firebase login
    
  8. Get your project ID

    firebase projects:list
    
  9. Select your project ID

    firebase use your-project-id
    
  10. At this point, you have two choices. Either run this project using the Firebase on the cloud or locally using emulator.

    1. Using the Firebase Cloud Backend:

      1. Deploy Firestore rules, Firestore indexes, and Cloud Storage rules

        firebase deploy --except functions
        
      2. Run the project

        npm run dev
        
    2. Using Firebase Local Emulator:

      1. Install Java JDK version 11 or higher before proceeding. This is required to run the emulators.

      2. Set the environment variable NEXT_PUBLIC_USE_EMULATOR to true in .env.development. This will make the app use the emulators instead of the cloud backend.

      3. At this point, you can run the following command to have a fully functional Twitter clone running locally:

        npm run dev:emulators
        

Note: When you deploy Firestore indexes rules, it might take a few minutes to complete. So before the indexes are enabled, you will get an error when you fetch the data from Firestore.<br><br>You can check the status of your Firestore indexes with the link below, replace your-project-id with your project ID: https://console.firebase.google.com/u/0/project/your-project-id/firestore/indexes

Optional: