Skip to content

🌐 Linguae is a real-time language exchange platform enabling human-to-human learning through live chats and video calls with native speakers.

Notifications You must be signed in to change notification settings

PrathamPeriwal/Linguae

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Linguae

Learn languages through real conversations.

A modern, full-featured language exchange platform enabling users to connect with native speakers globally for real-time language learning through messaging, video calls, and live interaction.


🌟 Overview

Linguae is a production-ready language exchange application that bridges learners and native speakers in a seamless, real-time environment. Built with a modern tech stack and designed for scalability, Linguae combines intuitive UI/UX with powerful real-time capabilities to create an engaging platform for language learners worldwide.

Key Value Proposition:

  • Connect with real language partners matched by learning goals
  • Learn naturally through authentic conversations
  • Flexible communication modes (chat, voice, video)
  • Curated language exchange experience with community safety

✨ Key Features

Real-Time Communication

  • 🌐 Live Messaging - Type indicators, read receipts, and instant message delivery
  • πŸ’¬ Message Reactions - Emoji reactions for engaging conversations
  • πŸ–ΌοΈ Media Sharing - Upload and share images in conversations

Video & Voice

  • πŸ“Ή One-on-One Video Calls - Crystal-clear peer-to-peer communication
  • πŸ‘₯ Group Video Calls - Connect with multiple learners simultaneously
  • 🎬 Screen Sharing - Share your screen for collaborative learning
  • πŸŽ₯ Call Recording - Record sessions for future reference

Community & Discovery

  • πŸ‘€ User Profiles - Showcase native language, learning goals, and bio
  • πŸ” Smart Matching - Find language partners based on language preferences
  • 🌐 Online Status - See who's available in real-time
  • 🀝 Friend Requests & Notifications - Build your learning network

Personalization

  • 🎨 32 Unique UI Themes - Customize your experience with diverse visual themes
  • πŸ’Ύ Persistent Theme Preference - Your theme choice is saved locally

Security & Reliability

  • πŸ” JWT Authentication - Secure token-based authentication
  • πŸ›‘οΈ Protected Routes - Role-based access control
  • 🚨 Comprehensive Error Handling - Graceful error recovery on both frontend and backend
  • ⚑ Production-Ready Architecture - Designed for scale and reliability

πŸ› οΈ Tech Stack

Frontend

  • React - UI framework
  • Vite - Lightning-fast build tool
  • Tailwind CSS - Utility-first styling
  • Zustand - Lightweight global state management
  • TanStack Query - Powerful data fetching and caching
  • Lucide React - Icon library
  • Stream Chat - Real-time messaging SDK

Backend

  • Node.js - Runtime environment
  • Express.js - Web framework
  • MongoDB - NoSQL database
  • Stream - Real-time messaging and video infrastructure
  • JWT - Authentication
  • Mongoose - MongoDB ODM

πŸš€ Getting Started

Prerequisites

Ensure you have installed:

  • Node.js (v16 or higher)
  • npm or yarn package manager
  • MongoDB (local or Atlas cloud)
  • Stream account (https://stream.io)

Environment Setup

Backend Configuration (/backend)

Create a .env file in the /backend directory:

# Server
PORT=5001
NODE_ENV=development

# Database
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/linguae

# Stream API (Real-time & Video)
STEAM_API_KEY=your_stream_api_key
STEAM_API_SECRET=your_stream_api_secret

# Authentication
JWT_SECRET_KEY=your_secure_jwt_secret_key_here

Frontend Configuration (/frontend)

Create a .env file in the /frontend directory:

# Stream API
VITE_STREAM_API_KEY=your_stream_api_key

Installation & Running

Backend Setup

cd backend
npm run dev

The backend server will start on http://localhost:5001

Frontend Setup

cd frontend
npm install
npm run dev

The frontend will be available on http://localhost:5173 (default Vite port)


πŸ“ Project Structure

linguae/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ controllers/          # Business logic
β”‚   β”‚   β”œβ”€β”€ models/               # MongoDB schemas
β”‚   β”‚   β”œβ”€β”€ routes/               # API endpoints
β”‚   β”‚   β”œβ”€β”€ middleware/           # Custom middleware
β”‚   β”‚   β”œβ”€β”€ lib/                  # Utilities & services
β”‚   β”‚   └── server.js             # Entry point
β”‚   β”œβ”€β”€ package.json
β”‚   └── .env
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/           # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ pages/                # Page components
β”‚   β”‚   β”œβ”€β”€ hooks/                # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ store/                # Zustand state
β”‚   β”‚   β”œβ”€β”€ lib/                  # Utilities
β”‚   β”‚   β”œβ”€β”€ constants/            # App constants
β”‚   β”‚   β”œβ”€β”€ App.jsx
β”‚   β”‚   β”œβ”€β”€ main.jsx
β”‚   β”‚   └── index.css
β”‚   β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ .env
β”‚   └── configuration files
β”‚
β”œβ”€β”€ package.json
└── README.md

Authentication Flow

  1. User signs up with email, full name, native language, and learning language
  2. JWT token generated and stored securely
  3. Protected routes validate token on each request
  4. Automatic logout on token expiration

Real-Time Messaging

  • Stream Chat Integration - Leverages Stream's infrastructure for:
    • Instant message delivery with typing indicators
    • Message history and persistence
    • Unread message tracking
    • Reaction support

Friend Discovery & Matching

  • Users can browse recommended language partners
  • Filter by native language
  • Search by user name
  • Send/accept friend requests
  • View friend request notifications

Video Call System

  • Peer-to-peer connections via Stream
  • Screen sharing for collaborative sessions
  • Call recording for future learning review
  • Real-time communication with low latency

🎨 UI/UX Highlights

  • Responsive Design - Optimized for mobile, tablet, and desktop
  • 32 Theme Options - Complete visual customization with persistent storage
  • Accessibility - Semantic HTML and ARIA labels
  • Loading States – Skeleton screens and spinners for smooth UX
  • Error Feedback - User-friendly error messages and alerts
  • Mobile Navigation - Hamburger menu with smooth scrolling

πŸ” Security Considerations

  • JWT Tokens - Secure, stateless authentication
  • Password Hashing - Bcrypt for password security (backend)
  • Protected Endpoints - Middleware validates authentication
  • CORS Configuration - Restricts cross-origin requests
  • Environment Variables - Sensitive data never hardcoded
  • Stream Security - Tokens validated server-side before use

🀝 Contributing

Contributions are welcome! Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is open-source and available under the MIT License.


Linguae - Connecting language learners worldwide. 🌍✨

About

🌐 Linguae is a real-time language exchange platform enabling human-to-human learning through live chats and video calls with native speakers.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages