https://github.com/amirthakatesan57/x-clone
X-clone is a cross-platform mobile app cloning X (Twitter) using React Native, Express.js, and MongoDB. It features user authentication, real-time chat, image uploads, notifications, and interactive feeds, supporting both Android and iOS with secure, scalable backend integration.
https://github.com/amirthakatesan57/x-clone
axios clerk-cloudinary expo expressjs mongodb react-native real-time-chat redux
Last synced: 3 months ago
JSON representation
X-clone is a cross-platform mobile app cloning X (Twitter) using React Native, Express.js, and MongoDB. It features user authentication, real-time chat, image uploads, notifications, and interactive feeds, supporting both Android and iOS with secure, scalable backend integration.
- Host: GitHub
- URL: https://github.com/amirthakatesan57/x-clone
- Owner: Amirthakatesan57
- Created: 2025-06-30T14:16:20.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-06-30T15:42:23.000Z (3 months ago)
- Last Synced: 2025-06-30T16:45:01.747Z (3 months ago)
- Topics: axios, clerk-cloudinary, expo, expressjs, mongodb, react-native, real-time-chat, redux
- Language: TypeScript
- Homepage: https://x-clone-git-main-amirthakatesan57s-projects.vercel.app/
- Size: 4.56 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
📱 React Native X Clone 🚀
A full-stack, cross-platform mobile clone of X (formerly Twitter) built with React Native, Express.js, and MongoDB — featuring authentication, real-time chat, cloud image uploads, and secure backend integration.
![]()
---
## 🧩 Project Overview
**X Clone** is a feature-rich social media mobile application developed using React Native for the frontend and Node.js/Express with MongoDB for the backend. It replicates core functionalities of X (formerly Twitter) including posting, liking, commenting, notifications, messaging, and user authentication.
* ✅ Cross-platform support for **Android** and **iOS**
* ✅ Built entirely with **JavaScript** (no need for Swift/Kotlin)
* ✅ Fully integrated **frontend, backend, and database**
* ✅ Scalable and secure architecture with production-ready features---
## 🚀 Key Features
* 🔐 **User Authentication** using Clerk (supports Google/Apple login)
* 🏠 **Feed/Home Screen**: Post text and images (from gallery or camera)
* ❤️ **Like and Comment System** with animated modal views
* 🔔 **Notifications Tab** to track interactions
* 📬 **Messaging Tab**: Real-time chat and long-press delete feature
* 👤 **Profile Tab** with editable user profile modal
* 🔎 **Search Tab** to explore trending content
* 🚪 **Logout** support with session handling---
## 🛠️ Tech Stack
### 📱 Mobile App
* **React Native** with **Expo**
* **Clerk** for authentication
* **Cloudinary** for image hosting
* **React Navigation**, **Redux**, **Axios**### 🌐 Backend
* **Node.js** + **Express.js**
* **MongoDB** via **Mongoose**
* **Arcjet** for bot detection, rate-limiting, and security
* **Cloudinary** SDK for media uploads---
## 🔐 Environment Configuration
### Backend (`/backend`)
Create a `.env` file with the following:
```env
PORT=5001
NODE_ENV=developmentCLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_keyMONGO_URI=your_mongodb_connection_uri
ARCJET_ENV=development
ARCJET_KEY=your_arcjet_api_keyCLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
```### Mobile (`/mobile`)
Create a `.env` file with:
```env
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
EXPO_PUBLIC_API_URL=your_backend_api_url
```---
## ⚙️ Getting Started
### 1️⃣ Run the Backend
```bash
cd backend
npm install
npm run dev
```### 2️⃣ Run the Mobile App
```bash
cd mobile
npm install
npx expo start
```> Make sure the mobile `.env` matches your local/backend API URLs for full functionality.
---
## 📦 Deployment Notes
* Backend can be hosted on **Render**, **Railway**, or **Vercel**
* MongoDB is hosted via **MongoDB Atlas**
* Expo allows testing on real devices using **Expo Go**---
## 🤝 Contributing
Pull requests are welcome! For major changes, please open an issue first to discuss what you’d like to change. Follow conventional commits and maintain code structure.