Skip to content
abin.th

Open source · E-learning platform

TutorTrek

An open-source e-learning platform where teachers publish video courses and students learn at their own pace, now widely used by developers as a learning reference.

GitHub stars
120+
Forks
50+

Problem

Teachers need a simple way to publish video courses, and students need one place to find and watch them, with separate experiences for teachers, students and administrators.

What I built

  • Teacher and student registration and login, with JWT authentication and OAuth social sign-in
  • A teacher dashboard to upload and manage courses and track progress
  • A student dashboard to browse and watch courses
  • An admin panel for managing users, courses and system settings
  • Video and media uploads through Multer and Cloudinary, and transactional email through Nodemailer

Technical highlights

  • Clean architecture on the backend, keeping domain logic independent of Express and MongoDB
  • Redis caching for frequently read data
  • Security hardening with Helmet headers, MongoDB query-injection sanitisation and schema validation
  • Nginx configuration for running the full stack behind a reverse proxy
  • Later adapted into a production e-learning platform for a freelance client

Key decisions

  1. 01

    Clean architecture from day one

    Use cases sit apart from Express and MongoDB, so business logic is testable on its own and the infrastructure can change without rewriting it. I chose it deliberately to practise production-grade structure, and it kept the codebase maintainable as features grew. That structure is also what made it adaptable for a real client later.

  2. 02

    Cloudinary for course media

    Large course videos are uploaded through Multer and stored and delivered by Cloudinary, which keeps heavy media off the API server.

  3. 03

    Redis in front of MongoDB

    Frequently read data is served from Redis, taking repeated load off the database.

Hardest problems

  • Handling large video uploads and smooth playback
  • Three roles (teacher, student and admin), each with its own flows and permissions
  • Secure authentication with JWT and OAuth social sign-in
  • Caching with Redis without serving stale data

Architecture

  1. React + Redux client
  2. Nginx reverse proxy
  3. Express API · Clean architecture
  4. MongoDB · Redis · Cloudinary

Stack

  • TypeScript
  • React
  • Redux
  • Tailwind CSS
  • Node.js
  • Express.js
  • MongoDB
  • Redis
  • Docker
  • Nginx

Links