A modern real-time web chat application built with Vite, React, TypeScript, and Firebase.
Chatify focuses on performance, clean UI, and rich messaging features for both 1:1 and group conversations.
- 🔐 Google Authentication (Firebase Auth)
- 💬 Real-Time Messaging
- 1:1 chats
- Group conversations
- 🧵 Replies
- Reply-to context for text, images, and files
- 🔗 Smart Link Detection
- Automatically converts URLs to clickable links
- 😀 Emoji Support
- Emoji picker
- Message reactions
- 👀 Read Receipts
- Seen indicators for messages
- 📎 Media Sharing
- Image uploads
- File uploads
- 🗑️ Message Removal
- Tombstone-style deletion notes
- 🌓 Theme Toggle
- Light / Dark mode
- 👑 Group Management
- Admin controls
- Promote members
- Add / remove participants
- ⚛️ React 18
- 🧠 TypeScript
- ⚡ Vite
- 🎨 Styled Components
- 🧩 Material UI (selected components)
- 🐻 Zustand
- 🔐 Firebase Authentication
- 🗃️ Firestore
- 🗂️ Firebase Storage
src/
├── firebase/ # Firebase client initialization
├── pages/ # Route-level pages (SignIn, Home, Chat, 404)
├── components/ # UI components (Chat, Sidebar, Media, Core)
├── hooks/ # Custom hooks (queries, theme, user store)
├── library/ # Utilities, types, constants
- 🟢 Node.js (LTS recommended)
npm installThis project requires a Firebase project with:
- 🔐 Authentication (Google provider enabled)
- 🗃️ Firestore Database
- 🗂️ Storage
Create a .env file from .env.example and set the following values:
VITE_FIREBASE_API_KEY=
VITE_FIREBASE_AUTH_DOMAIN=
VITE_FIREBASE_PROJECT_ID=
VITE_FIREBASE_STORAGE_BUCKET=
VITE_FIREBASE_MESSAGING_SENDER_ID=
VITE_FIREBASE_APP_ID=
-
Authentication Build → Authentication → Sign-in method → Google → Enable
-
Firestore Build → Firestore Database → Create database
-
Storage Build → Storage → Get started
You may use test mode rules for local development. Before deploying, ensure Firestore and Storage rules are properly secured.
npm run devnpm run dev # Start development server
npm run build # Type-check + production build
npm run preview # Preview production build
npm run tscheck # TypeScript noEmit check- ✅ Automated tests (unit + integration)
- ✅ Chat virtualization for large message histories
- ✅ Improved upload progress and retry UX
MIT License, free to use, modify, and build upon.