Echoe is a production-ready, real-time chat application designed for speed, simplicity, and scalability. Built using React, Firebase, and Tailwind CSS, it enables instant messaging, secure authentication, and a modern dark-mode interface. This project demonstrates real-world frontend architecture and serverless backend integration.
-
💬 Real-Time Messaging Instant message delivery using Firestore listeners (
onSnapshot). -
🔐 Secure Authentication Email/password authentication via Firebase Auth.
-
🔍 Smart User Search Find users through unique usernames.
-
🌙 Modern Dark Mode UI Clean
slate-900themed interface for an enhanced user experience. -
📱 Fully Responsive Optimized for both mobile and desktop devices.
- 🚀 Vite-powered builds for fast development & production
- 🔥 Real-time Firestore listeners (no manual polling)
- 🎨 Tailwind CSS for minimal CSS bundle size
- 📦 Modular component structure for scalability
- 🌐 Serverless Firebase backend (low latency, no API maintenance)
- Frontend: React (Vite)
- Styling: Tailwind CSS
- Backend: Firebase (Serverless)
- Database: Cloud Firestore
- Authentication: Firebase Auth
- Icons: React Icons (
react-icons)
- Node.js (v16+ recommended)
- Firebase account
git clone https://github.com/yourusername/echoe-chat-app.git
cd echoe-chat-appnpm install- Create a project in the Firebase Console
- Enable Authentication → Email/Password
- Create a Cloud Firestore database
- Replace the config in
src/firebase/firebase.js:
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_PROJECT_ID.firebaseapp.com",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_PROJECT_ID.appspot.com",
messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
appId: "YOUR_APP_ID"
};
⚠️ Security Tip: Use environment variables (.env) for production and never commit credentials.
npm run devOpen http://localhost:5173 to start chatting 🚀
Echoe is compatible with modern hosting platforms:
- Vercel – Optimized for React & Vite
- Netlify – Fast global CDN delivery
Firebase credentials are configured using environment variables.
users/
└── userId
├── username
├── email
└── avatar
chats/
└── chatId
├── participants
├── lastMessage
└── updatedAt
messages/ (sub-collection)
└── messageId
├── senderId
├── text
└── timestamp
Contributions are welcome! Fork the repository, create a feature branch, and submit a pull request.
- 👥 Group chats
- ✔️ Read receipts
- 📎 Media sharing
- 🔔 Push notifications
- 🛡️ Firestore security rules refinement
This project is open-source and licensed under the MIT License.