A modern language exchange platform connecting global learners through real-time conversations and AI-powered assistance.
Try Conversate now: https://conversate-fi27.onrender.com
Note: The live demo may take a moment to load as it's hosted on Render's free tier.
Conversate is a comprehensive language exchange platform built with the MERN stack, designed to connect language learners worldwide. Whether you're looking to practice conversation skills, learn from native speakers, or get AI-powered language assistance, Conversate provides the tools you need for effective language learning.
- Global Community: Connect with language partners from around the world
- Real-Time Communication: Seamless messaging and video calling experience
- AI-Powered Learning: Integrated Gemini AI assistant for enhanced learning
- Modern Architecture: Built with scalable, production-ready technologies
- Responsive Design: Optimized for both desktop and mobile experiences
- Smart Matching: Connect with native speakers of your target language
- Profile System: Showcase your languages and learning goals
- Global Reach: Practice with users from different countries and cultures
- Instant Messaging: Powered by Stream Chat SDK for reliable messaging
- Video Calls: High-quality 1:1 video conversations using Stream Video SDK
- File Sharing: Share images, documents, and learning materials
- Message History: Access previous conversations and track your progress
- Gemini Integration: Get instant help with translations and grammar
- Conversation Analysis: Receive feedback on your language usage
- Learning Suggestions: Personalized recommendations for improvement
- JWT-Based Auth: Secure user authentication and session management
- Email Verification: Verified user accounts for trusted interactions
- Privacy Controls: Manage your visibility and communication preferences
- Responsive Design: Seamless experience across all devices
- Smooth Animations: Enhanced with Framer Motion for fluid interactions
- Modern UI: Clean, intuitive interface built with DaisyUI
- 20 Unique Themes: Customizable themes for comfortable usage
React 19 - Modern UI library
Tailwind CSS - Utility-first CSS framework
DaisyUI - Tailwind CSS components
Framer Motion - Animation library
- Framer Motion - Animation library
- Lucide React - Icon library
- React Hot Toast - Notifications
- Axios - HTTP client
- Zustand - Lightweight state management
- TanStack Query v5 - Server state management and caching
Node.js - JavaScript runtime
Express.js - Web framework
MongoDB - NoSQL database with Mongoose ODM
- bcryptjs - Password hashing
- cookie-parser - Cookie handling middleware
- cors - Cross-origin resource sharing
- Stream Chat & Video SDK - Real-time communication infrastructure
- Gemini API - AI-powered language assistance
- JWT - Secure authentication tokens
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- npm or yarn
- MongoDB (Atlas or local instance)
You'll need accounts and API keys for:
- Stream - For chat and video functionality
- Google AI Studio - For Gemini API
- MongoDB Atlas - For database (or local MongoDB)
-
Clone the repository
git clone https://github.com/ChiranjeeviNanda/conversate.git cd conversate -
Install dependencies
# Install all dependencies (both frontend and backend) npm run build -
Set up environment variables
Create
backend/.env:PORT=5000 MONGO_URI=your_mongodb_connection_string JWT_SECRET_KEY=your_jwt_secret_key STREAM_API_KEY=your_stream_api_key STREAM_API_SECRET=your_stream_api_secret GEMINI_API_KEY=your_gemini_api_key
Create
frontend/.env:VITE_STREAM_API_KEY=your_stream_api_key
Important: All Vite environment variables must be prefixed with
VITE_to be accessible in the frontend.
-
Start the backend server:
cd backend npm run dev -
Start the frontend (in a new terminal):
cd frontend npm run dev -
Open your browser and navigate to
http://localhost:5173
npm startThe application will be available at http://localhost:5000
conversate/
βββ π backend/
β βββ π src/
β β βββ π agent/ # AI agent configurations
β β βββ π controllers/ # Route handlers
β β βββ π lib/ # Utility libraries and helpers
β β βββ π middleware/ # Authentication & validation
β β βββ π models/ # MongoDB schemas
β β βββ π routes/ # API routes
β β βββ server.js # Entry point
β βββ .env # Environment variables
β βββ package.json
βββ π frontend/
β βββ π public/ # Static assets
β βββ π src/
β β βββ π components/ # React components
β β βββ π constants/ # App constants and configuration
β β βββ π hooks/ # Custom hooks
β β βββ π lib/ # Frontend utility libraries
β β βββ π pages/ # Page components
β β βββ π store/ # Zustand stores
β βββ .env # Vite environment variables
β βββ package.json
βββ package.json # Root package.json
βββ README.md
- Sign Up: Create your account with email and password
- Complete Profile: Add your native language and languages you want to learn
- Find Partners: Browse and connect with language exchange partners
- Start Chatting: Send messages and practice your target language
- Video Calls: Engage in real-time conversations with voice and video
- AI Assistance: Use the AI assistant for translations and grammar help
# Root level
npm run build # Install dependencies and build frontend
npm start # Start production server
# Backend (cd backend)
npm run dev # Start backend in development mode
npm start # Start backend in production mode
# Frontend (cd frontend)
npm run dev # Start frontend development server
npm run build # Build frontend for production
npm run preview # Preview production build
npm run lint # Run ESLintAI Agent:
GET /api/agent # Get AI agent status
POST /api/agent/start-ai-agent # Start AI agent
POST /api/agent/stop-ai-agent # Stop AI agent
Authentication:
POST /api/auth/signup # User registration
POST /api/auth/login # User login
POST /api/auth/logout # User logout
POST /api/auth/onboarding # Complete user onboarding
PUT /api/auth/update # Update user profile
GET /api/auth/me # Get current user info
Stream Integration:
GET /api/auth/token # Get Stream chat token
Users & Friends:
GET /api/users # Get recommended users
GET /api/users/friends # Get user's friends
POST /api/users/friend-request/:id # Send friend request
PUT /api/users/friend-request/:id/accept # Accept friend request
PUT /api/users/friend-request/:id/reject # Reject friend request
GET /api/users/friend-requests # Get incoming friend requests
GET /api/users/outgoing-friend-requests # Get outgoing friend requests
Desktop Experience
Clean, professional landing page with clear call-to-action

Smart matching system to find language exchange partners
Stream-powered messaging with modern UI design

Crystal clear video conversations for immersive language practice

Mobile Experience
Optimized for mobile devices with touch-friendly interfaces
Testing Viewport: All mobile screenshots captured using Samsung Galaxy S20 Ultra viewport for optimal display quality
- Responsive Layout: Adapts seamlessly to different screen sizes
- Touch Gestures: Intuitive swipe and tap interactions
- Mobile-First Design: Optimized user experience on smaller screens
- Fast Loading: Efficient rendering for mobile networks
Theme Showcase
Choose from 20 beautiful themes to personalize your experience
- Custom Color Schemes: Professionally designed palettes
- Real-time Switching: Instant theme changes without refresh
- Persistent Settings: Your theme choice is remembered
- Mobile Optimized: All themes work perfectly on mobile
Pro Tip: Themes are powered by DaisyUI and provide consistent styling across all components while maintaining accessibility standards.
Contributions from the community are welcomed! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style and conventions
- Write clear, concise commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
- Report bugs and issues
- Suggest new features
- Improve documentation
- Fix existing issues
- Enhance UI/UX
- Group Conversations - Multi-user chat rooms
- Language Learning Games - Interactive vocabulary and grammar exercises
- Progress Tracking - Analytics and learning metrics
- Mobile App - Native iOS and Android applications
- Voice Messages - Audio message support
- Translation Tools - Real-time message translation
- Study Materials - Integrated learning resources
- Advanced AI Tutor - Personalized learning paths
- Community Features - Forums and discussion boards
- Certification System - Language proficiency assessments
- Offline Mode - Download conversations for offline study
- Video call quality may vary based on internet connection
- AI responses may occasionally be delayed during high traffic
- Some older browsers may not support all features
Cannot connect to MongoDB:
- Ensure your MongoDB URI is correct in the
.envfile - Check if your IP address is whitelisted in MongoDB Atlas
Stream SDK errors:
- Verify your Stream API key and secret are correct
- Ensure you're using the same API key in both frontend and backend
Build failures:
- Clear node_modules and reinstall dependencies
- Check Node.js version compatibility
If you encounter issues:
- Check the Issues page
- Search existing issues or create a new one
- Provide detailed error messages and steps to reproduce
This project is licensed under the MIT License - see the LICENSE file for details.
- Stream - For providing excellent real-time communication infrastructure
- Google - For the powerful Gemini AI API
- MongoDB - For reliable database solutions
- Render - For hosting and deployment platform
- Open Source Community - For the amazing tools and libraries
Special thanks to burakorkmez/streamify-video-calls for backend architecture inspiration.










