A modern, full-stack real-time communication platform featuring instant messaging, HD video calls, file sharing, and collaborative spaces. Built with cutting-edge web technologies for optimal performance and user experience.
- Instant messaging with typing indicators and read receipts
- Emoji support with emoji picker
- File sharing (images, videos, documents)
- Message history with pagination
- Private and group chats
- HD video calling with WebRTC
- Screen sharing capabilities
- Audio-only calls option
- Call history and statistics
- Multi-participant support
- Email/Password authentication
- Google OAuth integration
- JWT-based security
- Protected routes and API endpoints
- Email verification system
- Public and private rooms
- Room creation and joining
- Participant management
- Room-specific settings
- Video/chat/hybrid room modes
- Dark/Light theme support
- Responsive design (mobile-first)
- Real-time online status
- Friend system
- User profiles and avatars
- Modern glassmorphism UI
- Framework: Next.js 15 with App Router
- Language: TypeScript
- Styling: Tailwind CSS v4
- UI Components: Radix UI primitives
- State Management: React Context + Hooks
- Real-time: Socket.IO Client
- Forms: React Hook Form + Zod validation
- HTTP Client: Axios
- Framework: NestJS
- Language: TypeScript
- Database: PostgreSQL with Prisma ORM
- Authentication: Passport.js (JWT + Google OAuth)
- Real-time: Socket.IO
- File Upload: Multer
- Email: Nodemailer
- Caching: Redis
- API Documentation: Swagger
- Database: PostgreSQL
- Cache: Redis
- File Storage: Local/Cloud storage
- WebRTC: Peer-to-peer connections
- Email Service: SMTP (Gmail/SendGrid)
- Node.js 18+ and npm
- PostgreSQL database
- Redis server
- Google OAuth credentials (optional)
git clone https://github.com/yourusername/banter.git
cd bantercd server
npm install
cp .env.example .env
# Configure your environment variables
npm run db:migrate
npm run start:devcd client
npm install
cp .env.example .env.local
# Configure your environment variables
npm run dev- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- API Documentation: http://localhost:5000/api
banter/
βββ client/ # Next.js Frontend Application
β βββ src/
β β βββ app/ # App Router pages
β β βββ components/ # React components
β β βββ contexts/ # React contexts
β β βββ lib/ # Utilities and API client
β β βββ types/ # TypeScript type definitions
β βββ public/ # Static assets
β βββ package.json
β
βββ server/ # NestJS Backend Application
β βββ src/
β β βββ auth/ # Authentication modules
β β βββ user/ # User management
β β βββ room/ # Room/chat functionality
β β βββ message/ # Message handling
β β βββ call/ # Video call features
β β βββ upload/ # File upload handling
β β βββ common/ # Shared utilities
β βββ prisma/ # Database schema and migrations
β βββ package.json
β
βββ docs/ # Documentation
βββ GOOGLE_OAUTH_SETUP.md # OAuth setup guide
βββ README.md # This file
NEXT_PUBLIC_API_URL=http://localhost:5000/api/v1# Database
DATABASE_URL=postgresql://username:password@localhost:5432/banter_db
# Authentication
JWT_SECRET=your_jwt_secret
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# Redis
REDIS_URL=redis://localhost:6379
# Email
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_email@gmail.com
SMTP_PASS=your_app_passwordSee .env.example files in each directory for complete configuration options.
cd server
npm run test # Unit tests
npm run test:e2e # End-to-end tests
npm run test:cov # Coverage reportcd client
npm run test # Jest tests
npm run test:watch # Watch modeThe backend provides comprehensive API documentation through Swagger:
- Local: http://localhost:5000/api
- Production: https://your-domain.com/api
POST /auth/login- User loginPOST /auth/register- User registrationGET /oauth/google- Google OAuth initiationGET /rooms- Get user roomsPOST /rooms- Create new roomGET /messages/room/:id- Get room messagesPOST /messages- Send message
- JWT Authentication with refresh tokens
- Google OAuth 2.0 integration
- Input validation with Zod schemas
- SQL injection protection via Prisma
- XSS protection with proper sanitization
- CORS configuration for cross-origin requests
- Rate limiting on API endpoints
- File upload restrictions and validation
cd client
npm run build
npm run startcd server
npm run build
npm run start:prodcd server
npm run db:migrate
npm run db:generate- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow TypeScript best practices
- Use conventional commits
- Add tests for new features
- Update documentation as needed
- Follow ESLint and Prettier configurations
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js team for the amazing React framework
- NestJS team for the powerful Node.js framework
- Tailwind CSS for the utility-first CSS framework
- Socket.IO for real-time communication
- Prisma for the excellent database toolkit
- π§ Email: support@banter.app
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
Built with β€οΈ for better communication