Skip to content
@Idest-education

Idest

UIT

Idest - English Teaching Platform

A comprehensive full-stack learning platform for IELTS instruction, built with modern technologies and real-time capabilities.

About This Project

Idest is an English teaching platform specifically designed for IELTS instruction. It connects teachers and students in an interactive, modern learning environment with integrated tools for class management, online meetings, assignments, and AI-powered assessment.

This project represents a complete full-stack application built from scratch, incorporating cutting-edge technologies and architectural patterns. It was developed as an academic project at the University of Information Technology (UIT), VNU-HCM.

The Problem It Solves

Traditional online learning platforms often lack the integrated tools needed for comprehensive language instruction. Idest addresses this by providing:

  • Centralized class management for organizing students, teachers, and learning materials
  • High-quality real-time video/audio meetings with interactive whiteboards for visual teaching
  • Automated assessment for Reading and Listening skills, with AI-assisted grading for Writing and Speaking
  • Seamless communication through real-time messaging for classes and individuals
  • Integrated payment processing for course enrollment

What We Learned

This project has been an incredible learning journey, exposing me to a wide range of modern technologies and architectural patterns:

Microservices Architecture

  • Designing and implementing a hybrid architecture combining monolithic and microservice patterns
  • Understanding when to use different architectural approaches based on requirements
  • Service communication patterns: REST APIs, message queues, and reverse proxies

Real-Time Communication

  • Implementing WebSocket connections with Socket.IO for instant messaging
  • Integrating WebRTC via LiveKit for high-quality video conferencing
  • Building real-time collaborative features like whiteboards and live chat

AI Integration

  • Leveraging OpenAI API for intelligent grading of Writing and Speaking assignments
  • Creating context-aware AI chatbots that understand user queries
  • Implementing AI-powered feedback systems following IELTS rubrics

Database Design

  • Working with PostgreSQL (relational) for structured data (users, classes, sessions)
  • Using MongoDB (document-based) for flexible assignment content
  • Understanding when to choose different database paradigms
  • ORM/ODM patterns with Prisma and Mongoose

Message Queue Patterns

  • Implementing asynchronous processing with RabbitMQ
  • Building decoupled services that communicate via message queues
  • Handling long-running tasks (like AI grading) without blocking user requests

Authentication & Security

  • Implementing Supabase Authentication for secure user management
  • JWT token validation and role-based access control
  • WebSocket authentication and authorization
  • Security best practices: Helmet.js, CORS, rate limiting

Cloud Deployment & DevOps

  • Deploying services to Fly.io with Docker containers
  • Managing environment variables and secrets
  • Database migrations with Prisma
  • Understanding cloud infrastructure and scaling considerations

Modern Development Practices

  • TypeScript for type safety across frontend and backend
  • API documentation with Swagger/OpenAPI
  • Code organization with modular architecture
  • Testing strategies and best practices

Architecture Overview

Idest consists of three main components working together:

flowchart TB
    subgraph Frontend["Frontend (Idest)"]
        FE[Next.js App<br/>React + TypeScript]
    end
    
    subgraph Backend["Backend (Idest server)"]
        API[NestJS API<br/>REST + WebSocket]
        DB1[(PostgreSQL<br/>Prisma ORM)]
    end
    
    subgraph Microservice["Idest Assignment Service"]
        MS[NestJS Microservice<br/>Assignment Management]
        DB2[(MongoDB<br/>Mongoose)]
    end
    
    subgraph External["External Services"]
        SUPA[Supabase<br/>Auth & Storage]
        MQ[RabbitMQ<br/>Message Queue]
        AI[OpenAI<br/>AI Grading]
        LIVE[LiveKit<br/>Video Conferencing]
        STRIPE[Stripe<br/>Payments]
    end
    
    FE -->|REST API| API
    FE -->|WebSocket| API
    FE -->|Auth| SUPA
    API -->|SQL Queries| DB1
    API -->|REST Proxy| MS
    API -->|Messages| MQ
    MS -->|Messages| MQ
    MS -->|Document Queries| DB2
    MS -->|AI Calls| AI
    API -->|Auth Admin| SUPA
    API -->|Video Tokens| LIVE
    API -->|Payment Processing| STRIPE
Loading

Component Descriptions

Idest - Frontend Application

  • Next.js application with App Router
  • React 19 with TypeScript
  • Real-time WebSocket connections for live features
  • Supabase authentication integration
  • Responsive UI with TailwindCSS

Idest server - Main Backend Service

  • NestJS monolithic backend
  • PostgreSQL database with Prisma ORM
  • RESTful APIs with Swagger documentation
  • WebSocket gateways for real-time features
  • Integrates with external services (Supabase, LiveKit, Stripe)

idest assignment microservice - Assignment Service

  • NestJS microservice
  • MongoDB for flexible assignment content storage
  • Handles all assignment-related operations
  • AI-powered grading via OpenAI
  • Communicates with main backend via REST and RabbitMQ

Communication Patterns

  • REST APIs: Frontend communicates with backend via HTTP/JSON
  • WebSocket: Real-time features (meetings, chat) use Socket.IO
  • Message Queue: Asynchronous tasks handled via RabbitMQ
  • Reverse Proxy: Backend proxies assignment requests to microservice

Key Features

User Management & Authentication

  • Secure authentication with Supabase
  • Role-based access control (Student, Teacher, Admin)
  • User profiles with specialized fields for students and teachers

Class Management

  • Create and manage classes (group or one-on-one)
  • Invite codes for easy enrollment
  • Stripe integration for paid courses
  • Member and teacher management

Real-Time Video Meetings

  • High-quality video/audio conferencing via LiveKit
  • Interactive whiteboard with Excalidraw
  • Canvas drawing with Fabric.js
  • Screen sharing capabilities
  • Meeting recording support
  • Real-time chat during sessions

Assignment System

  • Reading: Multiple passage types with various question formats
  • Listening: Audio-based comprehension exercises
  • Writing: Task 1 and Task 2 with AI-powered grading
  • Speaking: Part 1, 2, 3 questions with audio recording and AI assessment
  • Automatic grading for Reading and Listening
  • Detailed feedback and IELTS band scores

AI-Powered Features

  • Context-aware chatbot for user assistance
  • Automated Writing and Speaking assessment
  • Detailed feedback following IELTS rubrics
  • Content generation for learning materials

Real-Time Messaging

  • Direct messages between users
  • Group conversations
  • Class-specific chat rooms
  • Meeting chat during sessions
  • Message history and attachments

Technologies & Tools

Frontend

  • Next.js (latest) - React framework with App Router
  • React 19 - UI library
  • TypeScript 5 - Type safety
  • TailwindCSS 3.4 - Utility-first CSS
  • Radix UI - Accessible component library
  • Zustand - State management
  • Socket.IO Client - WebSocket communication
  • LiveKit Components - Video conferencing UI

Backend

  • NestJS 11 - Progressive Node.js framework
  • Prisma 6.10 - PostgreSQL ORM
  • Mongoose 8.18 - MongoDB ODM
  • Socket.IO 4.8 - WebSocket server
  • Passport.js - Authentication middleware
  • Swagger - API documentation

Databases

  • PostgreSQL - Relational database for core data
  • MongoDB Atlas - Document database for assignments

Real-Time & Communication

  • LiveKit - WebRTC video infrastructure
  • Socket.IO - WebSocket framework
  • RabbitMQ (CloudAMQP) - Message queue

AI & External Services

  • OpenAI API - AI grading and chatbot
  • Supabase - Authentication and storage
  • Stripe - Payment processing
  • Cloudinary - Image storage and CDN

Infrastructure & DevOps

  • Fly.io - Container hosting
  • Docker - Containerization
  • Git - Version control

Project Structure

This repository contains three main components:

  • Frontend Next.js application
  • Main NestJS backend service
  • Assignment microservice

Each component has its own README with detailed setup and installation instructions. See the individual READMEs for:

  • Prerequisites and installation steps
  • Environment variable configuration
  • Running the application locally
  • API documentation and endpoints

Acknowledgments

Contributors:

  • Leader: Huỳnh Chí Hên - 23520455 - Github
  • Member: Nguyễn Cao Vũ Phan - 23521137 - Github

Supervisor:

Institution:

  • University of Information Technology (UIT), VNU-HCM

License

MIT License

Copyright (c) 2025 Vu Phan & Hen Huynh

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Popular repositories Loading

  1. idest-server idest-server Public

    TypeScript

  2. Idest Idest Public

    TypeScript 1

  3. Idest-Assignment Idest-Assignment Public

    TypeScript

  4. .github .github Public

Repositories

Showing 4 of 4 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…