Case study
Tutosh

Overview
Tutosh is an e-learning platform built around two main products: an online marketplace where students can discover and book learning sessions, and a live classroom application where teachers and students interact during their sessions.
I was responsible for the Live Classroom part of the platform, including its backend, frontend, real-time features, and migration from the existing technology stack.
The Live Classroom was originally built with Express.js on the backend and jQuery on the frontend. I proposed migrating the application to NestJS and Angular to improve the structure and maintainability of the platform.
I led the migration and rebuilt the Live Classroom almost from scratch in less than three months.
Live Classroom
The Live Classroom provides teachers and students with an interactive environment for conducting live learning sessions.
The platform supports:
- Live video streaming
- Real-time chat
- Interactive whiteboard
- Interactive PDF editor
- Multiple-choice questions (MCQ)
- Screen sharing
- Student management
The goal was to provide teachers with the tools they needed to conduct an online class without relying on separate applications for each activity.
Interactive session
Platform Migration
When I joined the Live Classroom project, the existing application was built with:
- Express.js backend
- jQuery frontend
I proposed migrating the backend to NestJS and the frontend to Angular.
The migration was not limited to changing frameworks. I rebuilt the application architecture and its core features while keeping the existing product requirements and classroom experience.
I completed the migration in less than three months, effectively rebuilding the Live Classroom from the ground up.
Legacy stack
The new architecture provided a more structured codebase and made the application easier to maintain and extend.
Backend Architecture
The Live Classroom backend was rebuilt using NestJS with a microservices architecture.
The system used GraphQL for communication between the frontend and backend services.
PostgreSQL was used as the primary database, with TypeORM handling database access and entity management.
The backend was designed to handle the real-time and collaborative nature of live classroom sessions while keeping the different parts of the system separated.
GraphQL · Socket.IO
Live Video & Real-Time Communication
The platform used OpenVidu for live video communication.
Each new classroom session could trigger the creation of a dedicated OpenVidu container.
This approach allowed classroom resources to be created per session and provided a foundation for scaling the live classroom infrastructure as the number of concurrent sessions increased.
Real-time communication between users and the classroom was handled using Socket.IO.
Interactive Learning Tools
The classroom was more than a video call.
Teachers and students could interact through several collaborative tools.
Interactive Whiteboard
Teachers and students could work on a shared whiteboard during the session.
PDF Editor
Teachers could use interactive PDF documents during the classroom session and work with students directly on the material.
MCQ
Teachers could create and run multiple-choice questions during a live session and use them as an interactive learning activity.
Screen Sharing
Teachers could share their screen with students during the session.
Chat
A real-time chat allowed teachers and students to communicate during the classroom.
Student Management
Teachers could manage students participating in the live session and control the classroom experience.
Session Infrastructure
A dedicated OpenVidu container was created when a new classroom session was started.
This approach isolated live classroom resources between sessions and allowed the infrastructure to create additional classroom environments as required.
It also reduced the dependency on a single shared live classroom instance for all sessions.
On session start
My Role
Full-Stack Developer
I was responsible for the Live Classroom application and led its migration from the existing technology stack to the new architecture.
My responsibilities included:
- Proposing the migration from jQuery to Angular
- Proposing the migration from Express.js to NestJS
- Designing the new Live Classroom architecture
- Rebuilding the frontend with Angular
- Rebuilding the backend with NestJS
- Implementing the microservices architecture
- Working with GraphQL
- Designing and working with PostgreSQL and TypeORM
- Integrating OpenVidu
- Implementing real-time communication with Socket.IO
- Developing the interactive classroom features
- Implementing session management
- Working on the dynamic OpenVidu container creation
- Testing and troubleshooting the migrated application
I completed the migration in less than three months, effectively rebuilding the Live Classroom from the ground up while preserving its core functionality.
Technology
Frontend
- Angular
- TypeScript
Backend
- NestJS
- Node.js
- Microservices
- GraphQL
Database
- PostgreSQL
- TypeORM
Real-Time & Video
- OpenVidu
- Socket.IO
Original Stack
- Express.js
- jQuery
Links
Related projects

iTravel KW
iTravel KW is an online travel platform for the Kuwait market, covering flights, hotels, and holiday packages. As Full-Stack Developer and Technical Team Lead, I owned architecture, backend, integrations, and the Admin Portal, with travel inventory served through a dedicated GDS Platform.
View case study →Biopole
Biopole is a corporate website for a medical equipment company. As freelance UI/UX designer, full-stack developer, and DevOps engineer, I handled the project end to end from Figma design through Angular, NestJS, GraphQL, PostgreSQL, Docker deployment, CI/CD with GitHub Actions, and SEO setup.
View case study →
GDS Platform
GDS Platform is a private B2B travel integration layer that gives clients a single API for multiple providers. I founded the idea and built the platform end to end: Nx monorepo, React/Vite frontend, NestJS microservices, provider mappers, API keys, and MCP, while working with DevOps on AWS.
View case study →