Project title: RAAFAT — School of Software Engineering (Mastery-Path Learning Platform)

Custom Software

Project title: RAAFAT — School of Software Engineering (Mastery-Path Learning Platform)

A guided learning operating system for RAAFAT’s School of Software Engineering — login → structured curriculum → real lessons/exercises → saved progress — with Studio authoring and Operations admin, not a generic course catalog.

EdTech · Ethiopia

  • TanStack Start
  • Better Auth
  • PostgreSQL
  • Drizzle ORM
  • Bun
  • Docker/Coolify
  • Tailwind CSS 4

Challenge

Learners needed a clear, skill-ordered path into software engineering (prompt engineering, frontend/backend craft, problem-solving) instead of scattered tutorials. Existing “course site” patterns would not support mentor-style sessions, reusable knowledge docs, RBAC, or an authoring pipeline that could grow into many schools later. Content and platform had to share one spine: what you see is in the DB.

Solution

We built a monorepo learning platform with four workspaces — Student (learn, practice, progress), Studio (draft → review → publish), Operations (users, roles, flags, audit), and in-app Docs (ADRs/standards). Auth is invite-only Better Auth; curriculum/progress/search sit on PostgreSQL with Drizzle; publish lifecycle and revision history keep content trustworthy. Deploy is Docker Compose on Coolify (elearning.raafat.site).

Result

End-to-end loop ships: login → curriculum → real lesson content → progress saved → ⌘K search → Studio authoring. Platform shell ~80%; Phase 0 curriculum seeded (~15% of master roadmap). Ops/security hardening and AI layer still ahead. Live beta URL: https://elearning.raafat.site. Traffic and satisfaction numbers: TBD.

Key features

  • Student learning path with markdown lessons, TOC, completion, continue-learning, bookmarks, and progress (mastery %, phase bars)
  • Practice exercises with hint/solution reveal and manual status (todo / attempted / solved)
  • Content Studio publishing pipeline: draft → in review → approved → published → archived, plus revisions and media library
  • Operations workspace: users/roles, memberships, audit log, feature flags, announcements, platform health
  • PostgreSQL full-text search via command palette (⌘K) across lessons, knowledge, exercises, projects
  • DB-backed RBAC (6 roles, 36 permissions) with soft-delete content lifecycle and Coolify-ready Docker deploy

Live site preview

Technical approach

Chose a single TanStack Start app + Postgres over microservices so one solo-dev team can ship vertical slices (ADR → schema/API → UI → real content). Domain-organized Drizzle schema (auth/, learning/, progress/, etc.) and ADRs gate decisions. Keyword FTS first; semantic/RAG deferred until production trust (backups, monitoring) is solid. Invite-only signup and bootstrap admin avoid open registration until content depth is ready.

What's next

Learning Command Center sessions (SPR-006), richer practice/grading, backup restore drills, monitoring; later semantic search and multi-school tenancy. Limitation today: thin curriculum (~1 chapter live vs 30+ target) and no automated code grading.

Project details

Client
RAAFAT-DIGITAL (internal product)
Service
Custom Software
Timeline
~8–10 days for MVP
Stack
TanStack Start, Better Auth, PostgreSQL, Drizzle ORM, Bun, Docker/Coolify, Tailwind CSS 4