kenya virtual tution platform
# Tusome — CBC E-Learning Platform
> **Status:** Active development. No PRs accepted without prior written approval from the project owner.
> **Plagiarism notice:** This project and all its code are the original work of the project owner. Unauthorised copying, redistribution, or derivative works are strictly prohibited.
---
## What is Tusome?
Tusome is a subscription-based e-learning SaaS platform built for Kenyan students following the Competency-Based Curriculum (CBC) — Grades 4–12. It delivers structured lesson content and quizzes for Primary, Junior Secondary, and Senior Secondary tiers, with integrated M-Pesa payments, a gamification system, and a full multi-role admin panel.
---
## Architecture
```text
tusome/ ← Turborepo monorepo root
├── apps/
│ ├── web/ ← Student-facing Next.js app (port 3000)
│ └── admin/ ← Admin panel Next.js app (port 3001)
├── packages/
│ ├── ui/ ← Shared component utilities (cn, etc.)
│ ├── api-client/ ← Shared TypeScript types
│ └── config/ ← Shared TypeScript/ESLint configs
├── backend/ ← FastAPI + SQLAlchemy (Python 3.12)
└── turbo.json
```
### Tech Stack
| Layer | Technology |
| --- | --- |
| Frontend (web + admin) | Next.js 15 App Router, React 19, TypeScript, Tailwind CSS v4 |
| UI Components | Shadcn UI, Radix UI, Lucide Icons, Framer Motion |
| Backend API | FastAPI, SQLAlchemy (async), Alembic, Pydantic v2 |
| Database | PostgreSQL 16 |
| Auth | JWT (HS256), Argon2id password hashing, separate student/admin token namespaces |
| Payments | M-Pesa Daraja API (STK Push + webhook) |
| Email | HTML templates built; delivery pending email provider setup |
| Monorepo tooling | Turborepo + pnpm workspaces |
---
## Current Features (as of March 2026)
### Student Web App (`apps/web`)
#### Authentication
- Registration with grade-level selection (Grade 4–12)
- JWT login with 7-day fre …