"The best way to learn a language is by speaking it with those who live it daily."
Features β’ Tech Stack β’ Quick Start β’ Installation β’ Deployment
LangConnect is a language learning platform built on a simple yet powerful idea: the best way to master a language is through real conversations with native speakers. Traditional language learning apps teach you grammar and vocabulary, but they can't replicate the natural flow of authentic conversation, cultural nuances, and real-world context that comes from talking to someone who grew up speaking the language.
This full-stack MERN application connects language learners with native speakers worldwide, enabling them to practice through live video calls and text chat. Whether you're preparing for travel, advancing your career, or simply passionate about languages, LangConnect provides an immersive environment where you can:
- π£οΈ Practice Speaking - Have real conversations, not scripted dialogues
- π Improve Listening - Understand natural accents and speaking speeds
- π§ Learn Context - Discover idioms, slang, and cultural expressions
- π€ Build Connections - Make friends across cultures while learning
- β‘ Get Instant Feedback - Correct mistakes in real-time through natural conversation
Built with modern web technologies and powered by Stream SDK for crystal-clear, low-latency communication, LangConnect removes the barriers between learners and fluency.
- Connect with Native Speakers - Match with speakers of the language you're learning
- Practice Real Conversations - Move beyond textbooks with authentic dialogue
- Cultural Immersion - Learn idioms, slang, and cultural context naturally
- Flexible Learning Schedule - Practice whenever works for you, with learners worldwide
- Real-time Text Chat - Message with typing indicators and emoji reactions for quick practice
- HD Video Calls - Face-to-face conversations for pronunciation and speaking practice
- Screen Sharing - Share materials, corrections, or resources during sessions
- Call Recording - Record practice sessions to review your progress later
- Language Partner Matching - Find friends who speak your target language
- User Profiles - Showcase languages you speak and want to learn
- Online Availability - See who's ready for practice right now
- Friend System - Build lasting connections with your language partners
- Real-time Notifications - Never miss a practice opportunity
- 32 UI Themes - Personalize your experience with DaisyUI themes
- Responsive Design - Seamless experience across all devices
- Dark Mode - Eye-friendly interface for any time of day
- JWT Authentication - Secure token-based authentication
- Protected Routes - Route-level access control
- Password Encryption - bcrypt for secure password hashing
- HTTP-only Cookies - Secure session management
- React 19 - Modern UI library with latest features
- Vite - Lightning-fast build tool and dev server
- TailwindCSS + DaisyUI - Utility-first CSS with pre-built components
- TanStack Query - Powerful data fetching and caching
- Zustand - Lightweight state management
- Stream Video & Chat React SDK - Real-time communication
- React Router - Client-side routing
- Axios - HTTP client for API requests
- Node.js + Express.js - Fast and minimal web framework
- MongoDB + Mongoose - NoSQL database with elegant ODM
- Stream Chat & Video SDK - Low-latency real-time communication
- JWT - Secure authentication tokens
- bcryptjs - Password hashing
- Cookie-parser - Cookie management
- CORS - Cross-origin resource sharing
- Node.js (v16 or higher)
- MongoDB Atlas account or local MongoDB
- Stream.io account (Sign up here)
- Git
- Clone the repository
git clone https://github.com/zephyr45/LangConnect.git
cd LangConnect- Install dependencies
# Install all dependencies at once
npm install
# Or install separately
cd backend && npm install
cd ../frontend && npm install- Set up environment variables
Backend (/backend/.env):
PORT=5001
MONGO_URI=your_mongodb_connection_string
STREAM_API_KEY=your_stream_api_key
STREAM_API_SECRET=your_stream_api_secret
JWT_SECRET_KEY=your_jwt_secret_key
NODE_ENV=developmentFrontend (/frontend/.env):
VITE_STREAM_API_KEY=your_stream_api_key-
Get Stream.io credentials
- Sign up at getstream.io
- Create a new app
- Copy your API Key and Secret
- Paste them in the
.envfiles
-
Run the application
Backend (Terminal 1):
cd backend
npm run devFrontend (Terminal 2):
cd frontend
npm run dev- Access the application
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:5001
- Frontend:
LangConnect/
βββ backend/ # Express backend
β βββ src/
β β βββ controllers/ # Route controllers
β β βββ models/ # MongoDB models
β β βββ routes/ # API routes
β β βββ middleware/ # Custom middleware
β β βββ lib/ # Database & Stream config
β β βββ server.js # Entry point
β βββ .env # Environment variables
β βββ package.json
β
βββ frontend/ # React frontend
β βββ src/
β β βββ components/ # Reusable components
β β βββ pages/ # Page components
β β βββ hooks/ # Custom React hooks
β β βββ lib/ # Utilities & API client
β β βββ store/ # Zustand state
β β βββ constants/ # App constants
β βββ .env # Environment variables
β βββ package.json
β
βββ package.json # Root package.json
Backend:
- Create a new Web Service on Render
- Connect your GitHub repository
- Configure:
- Build Command:
cd backend && npm install - Start Command:
npm run start --prefix backend - Add environment variables from
.env
- Build Command:
Frontend:
- Create a Static Site on Render
- Configure:
- Build Command:
cd frontend && npm install && npm run build - Publish Directory:
frontend/dist - Add environment variables
- Build Command:
Before deploying, update CORS settings in backend/src/server.js:
app.use(cors({
origin: "https://your-frontend-domain.com",
credentials: true,
}));MongoDB Connection Error
- Whitelist your IP in MongoDB Atlas (Network Access β Add IP β Allow from Anywhere)
CORS Issues
- Verify CORS origin matches your frontend URL
- Ensure
credentials: trueis set
Stream Chat/Video Not Working
- Double-check API credentials in
.envfiles - Verify Stream.io dashboard shows your app as active
npm run dev- Start development server with nodemonnpm start- Start production server
npm run dev- Start Vite dev servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
npm run build- Build entire projectnpm start- Start production server
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.
- Stream.io - For the amazing real-time SDK
- DaisyUI - For beautiful UI components
- MongoDB - For the flexible database
Made with β€οΈ for language learners worldwide
β Star this repo if you find it helpful!