A real-time chat application designed for tech enthusiasts to connect, discuss, and collaborate in dedicated rooms. Built with a modern full-stack architecture using React and Node.js.
This monorepo contains:
tnc-mobile: The React Native mobile application (Expo).backend: The Node.js/Express server with MongoDB and Socket.io.frontend: The React-based web interface for desktop users.
- Framework: React (Vite)
- Language: TypeScript
- Styling: TailwindCSS
- State Management: Redux Toolkit
- Routing: React Router DOM
- Real-time: Socket.io Client
- Icons: Lucide React
- Framework: React Native with Expo
- Language: TypeScript
- Navigation: React Navigation (Stack)
- Styling: StyleSheet (Custom Dark Theme)
- State/Storage: Context API, Async Storage
- HTTP Client: Axios
- Socket: Socket.io
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB (Mongoose)
- Authentication: JWT & Cookies
- Email: Nodemailer (Gmail SMTP)
- Cross-Platform: Seamless experience on both Web and Mobile.
- Authentication: Sign Up, Login, and Forgot Password (via OTP/Link).
- Rooms: Specialized chat rooms (Blockchain, AI/ML, Frontend, etc.).
- Real-time Chat: Instant messaging in rooms with live updates.
- Rich Media: Image and Code snippet sharing.
- Persistent Logic: Auto-login via Async Storage (Mobile) and Cookies (Web).
- Modern UI: Dark mode aesthetic with custom Toast notifications.
- Node.js (v18+)
- MongoDB Instance (Local or Atlas)
- Expo Go on your phone or an emulator.
cd backend
npm install
# Create .env file based on .env.local (PORT, MONGO_URL, JWT_SECRET, etc.)
npm run devcd frontend
npm install
# Create .env file (VITE_API_URL=http://localhost:8001, etc.)
npm run devcd tnc-mobile
npm install
# Create .env file with EXPO_PUBLIC_API_URL=http://<YOUR_IP>:8001
npm expo start- Fork the repo
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request