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

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.
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.
Discover by level
Student selects education level — College, Lycée, University or Professional — and browses structured classes.
Explore curriculum
Drill into subjects → chapters → topics with curated videos, PDFs, exercises and revision sheets.
Enroll & subscribe
Choose Basic / Standard / Premium and pay with MTN MoMo or Orange Money via CamPay/FreemoPay — OAuth2 + Google login, no bank required.
Access resource library
Stream videos, download PDFs, complete exercises — progress auto-tracked with analytics per topic.
Join live sessions
Scheduled or on-demand Jitsi Meet classrooms with recording, participant tracking and calendar sync.
Collaborate in real time
Ask in public/private forums, DM via WebSocket chat, and receive push notifications for replies and deadlines.
Track school year
Academic year & course-declaration flow mirrors real Cameroonian enrolment — school-year scoped progress.
Get certified by progress
Analytics dashboard shows time-on-topic, exercise scores and live-session attendance — visible to students, teachers and admins.
My Technical Contribution
Lead Full-Stack Engineer & Platform Architect
Technology Stack
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.
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.
System Actors
Middle/High-School Student
Follows college/lycée curriculum, accesses revision materials, joins live revision sessions.
University Student
Enrolls by faculty/class, streams lecture resources, collaborates in course forums.
Professional Learner
Upskills via professional track — short courses with certificates and async resources.
Teacher
Creates course offerings, publishes chapters/topics, schedules Jitsi sessions, tracks class progress.
Administrator
Manages users, school years, course declarations, subscriptions and platform analytics.
CamPay / FreemoPay
Processes MTN MoMo & Orange Money subscriptions; webhooks drive plan activation.
Jitsi Meet
Provides embedded live classrooms — room creation, JWT auth, recording and presence.
System
Celery/Redis + Channels workers for notifications, activity logging and push alerts.
Project Goals & Indicators
| Goal | Indicator |
|---|---|
| Platform live & functional | Shipped — classconnect.cm + alpha vercel deploy |
| Education levels covered | 4 — College, Lycée, University, Professional |
| Curriculum depth | Class → Subject → Chapter → Topic → Resource |
| Payment integration | MTN MoMo + Orange Money (CamPay/FreemoPay) |
| Live classrooms | Jitsi Meet embedded, recording-ready |
| Real-time community | Forums + WebSocket chat + push notifications |
| Languages | FR/EN bilingual across UI & content |
| Platform uptime | 99.9% target, Docker + Nginx + Gunicorn |
Lessons Learned
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.
Mobile Money UX must assume webhook retries and USSD delays — idempotency keys and explicit subscription states (pending/active/expired) are non-negotiable.
Bilingual from day one changes everything — from DB schema (translatable fields) to Next.js routing and content authoring workflows.
Live + async is the real pedagogy split — Jitsi sessions drive engagement, but offline-friendly resource caching is what retains learners on low bandwidth.
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.