Tomdieu Logo
ExperienceProjectsSkillsBlogContact
ExperienceProjectsSkillsBlogContact
Back to Projects
EducationE-LearningEdTechPWASocial ImpactCameroonLive — classconnect.cm · 1,780+ commits · Open Source

ClassConnect — Adaptive Learning for Africa

Cameroon's first adaptive e-learning platform — personalized courses at your own pace, from middle school to professional upskilling

Visit Live Site →GitHubWant to build something with impact?
My Role: Lead Full-Stack Engineer & Platform Architect
Organisation: Founder | Tomdieu Ivan — Yaoundé, Cameroon
ClassConnect
Chapter I

The Problem

78%

Learn via WhatsApp

Courses shared as scattered PDFs & voice notes — no curriculum, no progress tracking

2.1M+

University students

Overcrowded lecture halls across Cameroon — limited access to qualified instructors

11.4M+

Mobile Money accounts

MTN MoMo + Orange Money penetration — yet no integrated subscription flow for education

0

Unified platform

No centralized system for multi-level curricula before ClassConnect

In Cameroon, quality education is fragmented across WhatsApp groups, photocopied handouts, and informal tutoring. Middle school students, high school candidates, university learners and working professionals all face the same gap: no structured curriculum, no verified resources, and no way to track progress or join live sessions with qualified teachers.

11.4 million active Mobile Money accounts exist on MTN MoMo and Orange Money — yet no learning platform had turned this payment rails into frictionless education subscriptions. Bilingual learners (French/English) lacked a single platform that could serve both languages while supporting low-bandwidth, mobile-first access. Existing foreign MOOCs ignore local curricula, local payment methods, and local academic calendars.

Chapter II

The Solution — A Unified Learning Ecosystem

ClassConnect digitises the entire learning journey — structured class hierarchies → subjects → chapters → topics, each with videos, PDFs, exercises and revision materials, live Jitsi classrooms and real-time community. One account gives a middle-schooler, a university student and a working professional the same adaptive experience: enroll, subscribe via Mobile Money, learn live or async, discuss in forums, chat in real time, and watch progress sync automatically. Every course is bilingual FR/EN, mobile-first, and built for Cameroon's connectivity realities.

How it works
1

Discover by level

Student selects education level — College, Lycée, University or Professional — and browses structured classes.

2

Explore curriculum

Drill into subjects → chapters → topics with curated videos, PDFs, exercises and revision sheets.

3

Enroll & subscribe

Choose Basic / Standard / Premium and pay with MTN MoMo or Orange Money via CamPay/FreemoPay — OAuth2 + Google login, no bank required.

4

Access resource library

Stream videos, download PDFs, complete exercises — progress auto-tracked with analytics per topic.

5

Join live sessions

Scheduled or on-demand Jitsi Meet classrooms with recording, participant tracking and calendar sync.

6

Collaborate in real time

Ask in public/private forums, DM via WebSocket chat, and receive push notifications for replies and deadlines.

7

Track school year

Academic year & course-declaration flow mirrors real Cameroonian enrolment — school-year scoped progress.

8

Get certified by progress

Analytics dashboard shows time-on-topic, exercise scores and live-session attendance — visible to students, teachers and admins.

Chapter III

My Technical Contribution

Lead Full-Stack Engineer & Platform Architect

Technology Stack

Next.js 15 (App Router)React 19TypeScriptTailwind CSSshadcn/uiZustandTanStack QueryNextAuth v5next-internationalFramer MotionDjango 5.1.4Django REST FrameworkPostgreSQLOAuth2 (django-oauth-toolkit)drf-yasg (Swagger)CeleryRedisRabbitMQDjango ChannelsDocker ComposeNginxGunicornJitsi MeetCamPay / FreemoPayAWS S3 / Backblaze B2

Key Engineering Challenges

Hierarchical curriculum modelling

Designed a 5-level relational model — Class → Subject → Chapter → Topic → Resource — with nested serializers, ordered querysets, and admin inlines so non-technical staff can publish an entire academic year without code changes.

RBAC + OAuth2 across 4 roles

Students, Professionals, Teachers and Admins share one auth layer (django-oauth-toolkit + NextAuth v5). Scoped querysets, permission classes and Next.js middleware enforce class-enrollment and subscription checks on every request.

Mobile Money subscriptions — idempotency

CamPay/FreemoPay webhooks carry duplicate retries on flaky networks. Built idempotency keys, server-side signature verification, and subscription-state machine (pending → active → expired) to prevent double-crediting and race conditions.

Real-time at Cameroonian latency

Django Channels + Redis pub/sub powers forum live-updates and WebSocket chat. Presence tracking, typing indicators and offline message queues keep collaboration snappy even on 2G / intermittent connectivity.

Jitsi live classrooms, embedded

Integrated Jitsi Meet IFrame API with JWT-authenticated rooms, scheduled sessions, participant join/leave tracking, recording hooks and Google Calendar API sync — all rendered inside Next.js without leaving the platform.

Bilingual PWA, single codebase

next-international with FR/EN dictionaries across all UI and curriculum metadata. PWA-cached critical assets, lazy-loaded videos/PDFs and compressed S3 delivery keep the platform usable on low-end Android devices.

Monolith → microservices runway

Shipped as a Dockerized Django monolith (backend/monolithic/) with a parallel backend/micro-services/ skeleton. API boundaries are service-ready — User, Course, Payment, Notification and Streaming services can split without frontend rewrites.

Chapter IV

Platform Features

Multi-Level by Design

College, Lycée, University and Professional tracks — each with its own class hierarchy and curriculum.

Structured Curriculum

Class → Subject → Chapter → Topic graph with ordered resources (videos, PDFs, exercises, revisions).

Resource Library

Centralized library per topic; S3-backed delivery with streaming, download and offline-friendly caching.

Live Classrooms

Jitsi-powered video conferencing — scheduled & on-demand, with recording and attendance.

Forum + Real-Time Chat

Public/private forums plus WebSocket DM — the community that WhatsApp never provided.

Flexible Subscriptions

Basic / Standard / Premium tiers via MTN MoMo & Orange Money — no bank, no friction.

Progress & Analytics

Per-topic progress, exercise scores, live attendance and admin-wide activity audit trail.

Bilingual & PWA-Ready

Full FR/EN i18n, OAuth2 + Google SSO, and PWA install for low-bandwidth continuity.

Chapter V

System Actors

M

Middle/High-School Student

Follows college/lycée curriculum, accesses revision materials, joins live revision sessions.

U

University Student

Enrolls by faculty/class, streams lecture resources, collaborates in course forums.

P

Professional Learner

Upskills via professional track — short courses with certificates and async resources.

T

Teacher

Creates course offerings, publishes chapters/topics, schedules Jitsi sessions, tracks class progress.

A

Administrator

Manages users, school years, course declarations, subscriptions and platform analytics.

C

CamPay / FreemoPay

Processes MTN MoMo & Orange Money subscriptions; webhooks drive plan activation.

J

Jitsi Meet

Provides embedded live classrooms — room creation, JWT auth, recording and presence.

S

System

Celery/Redis + Channels workers for notifications, activity logging and push alerts.

Chapter VI

Project Goals & Indicators

GoalIndicator
Platform live & functionalShipped — classconnect.cm + alpha vercel deploy
Education levels covered4 — College, Lycée, University, Professional
Curriculum depthClass → Subject → Chapter → Topic → Resource
Payment integrationMTN MoMo + Orange Money (CamPay/FreemoPay)
Live classroomsJitsi Meet embedded, recording-ready
Real-time communityForums + WebSocket chat + push notifications
LanguagesFR/EN bilingual across UI & content
Platform uptime99.9% target, Docker + Nginx + Gunicorn
Chapter VII

Lessons Learned

1

Curriculum is the data model — modelling Class→Subject→Chapter→Topic→Resource correctly upfront saved months of refactoring and made the admin usable by non-developers.

2

Mobile Money UX must assume webhook retries and USSD delays — idempotency keys and explicit subscription states (pending/active/expired) are non-negotiable.

3

Bilingual from day one changes everything — from DB schema (translatable fields) to Next.js routing and content authoring workflows.

4

Live + async is the real pedagogy split — Jitsi sessions drive engagement, but offline-friendly resource caching is what retains learners on low bandwidth.

5

Ship a disciplined monolith with service boundaries in mind — the micro-services folder is empty on purpose, but API contracts already allow User/Course/Payment/Notification/Streaming to split cleanly later.

Building the next learning platform?

Let's discuss your vision — from idea to scale.

Let's Talk
Previous Project
Next Project

© 2026 Tomdieu Ivan. All rights reserved.

GitHubLinkedInEmail

Crafted with passion using Next.js & Tailwind CSS.

LinkedIn
X
youtube