A real-time messaging app built with Next.js 15
Chat instantly with friends, create group conversations and share images - all with a clean, modern interface.
- Real-time messaging with instant delivery
- Group chats and direct messages
- Edit Group information and personal profile
- Image sharing with drag-and-drop
- Read receipts and message status
- User authentication and profiles
- Search and add contacts
- Frontend: Next.js 15, TypeScript, Tailwind CSS, ShadCN UI
- Backend: Next.js API Routes, NextAuth, MongoDB, Mongoose
- Real-time: Pusher for WebSocket connections
- Images: Cloudinary for uploads
- Validation: Zod schemas
- Node.js 18+ and npm
- MongoDB Atlas account (free)
- Pusher account (free tier available)
- Cloudinary account (for images)
-
Clone and install:
git clone https://github.com/ojasvi004/Roon.git cd Roon npm install -
Environment setup:
Create
.envin the root directory:NEXTAUTH_SECRET=your_random_secret_string NEXTAUTH_URL=http://localhost:3000 DATABASE_URL=mongodb+srv://username:password@cluster.mongodb.net/roon PUSHER_APP_ID=your_pusher_app_id PUSHER_KEY=your_pusher_key PUSHER_SECRET=your_pusher_secret PUSHER_CLUSTER=your_pusher_cluster NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=your_cloud_name
-
Get your API keys:
- MongoDB: Sign up at MongoDB Atlas, create a cluster, get connection string
- Pusher: Sign up at Pusher, create an app, copy credentials
- Cloudinary: Sign up at Cloudinary, get cloud name from dashboard
-
Start the app:
npm run dev
Open http://localhost:3000 and start chatting :)
npm run dev- Development server with hot reloadnpm run build- Build for productionnpm run start- Start production server
src/
├── app/ # Pages and API routes
│ ├── (auth)/ # Login/register pages
│ ├── (root)/ # Main app (chats, contacts, profile)
│ └── api/ # Backend API endpoints
├── components/ # UI components
├── models/ # Database schemas (User, Chat, Message)
└── lib/ # Utilities and configurations
Want to help improve Roon? Here's how:
- Fork the repo and create a branch:
git checkout -b feature/cool-feature - Make your changes (follow the existing code style)
- Test everything works
- Submit a pull request
Ideas for contributions:
- Better mobile experience
- New messaging features (reactions, threads)
- Performance improvements
- UI/UX enhancements
- Bug fixes
Having trouble? Here's what to do:
- Create an issue with details about the problem
- Include your environment (Node version, OS)
- Describe what you expected vs what happened
- Reach out: ojasvidoye@gmail.com
MIT License