← Back to projects

Open-source learning platform

open.quiz

A self-hostable learning platform for structured lessons, interactive quizzes, learner progress, and independently managed curricula.

My role: Sole Developer · Maintainer

In the public demo, every verified sign-in receives administrator access so you can explore lessons, themes, and site settings. Other users' email addresses are masked, and admin actions on other accounts are restricted. The database resets daily, so demo accounts, content, and settings are temporary. This demo behavior is separate from a normal self-hosted installation.

The problem

Learning platforms often tie a curriculum and visual identity to application code. Supporting a new subject or branded deployment can then require editing or forking the core product.

The solution

open.quiz separates learning services from content modules. Learners get accounts, structured lessons, quizzes, and progress tracking; administrators can create or import curricula and customize the site's branding and themes. Portable .openquiz.json packages can include a theme and assets, with lesson modules optional. A single Node.js service can serve the built React frontend and Express API.

My contributions

  • Independently developed Sprout's evolution into open.quiz, separating curriculum modules from the core learning services.
  • Built the single-service deployment in which Express serves the production React app alongside the API.
  • Implemented administrator-managed themes, learning material, and portable packages so deployments can adapt content and presentation without changing the shared core.
  • Maintained contribution, conduct, security, and content-accuracy guidance for the open-source project.

Behind the project

Sprout was a team-built financial-literacy app from the Code the Dream practicum. I independently developed its evolution into open.quiz, a self-hostable platform for different subjects and visual identities. I built the platform's modular content, administrator customization, portable packages, and deployment workflow, and maintain its project guidance.

Engineering decisions

Curricula and presentation need to be portable without coupling either to application code. open.quiz packages keep theme, image assets, and optional lesson modules as separate parts, allowing content-only or themed experiences to move between installations. Administrators can also create and manage learning material in the app. On a fresh self-hosted installation, the first successful sign-in initializes administrator access; the included open.quiz instructional lessons are installed automatically, while example curricula remain opt-in.

Testing

GitHub Actions runs frontend lint, tests, and builds; backend lint, coverage-enforced tests, and syntax checks; then browser journey checks. The documented npm run verify workflow also runs every Playwright project, including throttled-network and learn-flow latency runs.

The Sprout connection

open.quiz grew from Sprout, a financial-literacy app built during the Code the Dream practicum, into a self-hostable platform for independently managed curricula, customizable themes, and portable learning packages.

Read the Sprout case study
Repository
journey-to-code-org/open.quiz
Repository updated
Repository type
Forked repository