Skip to content
All projects
FrontendNext.js · App Router · TypeScriptPrivate codebase

Content Dashboard

Next.js CMS for a question bank — review workflows, math rendering and AI mapping.

Role · Frontend engineer — question inventory, review flows, API layer and deployment.

15+
Modules
2
Editors
2
Math engines
Vercel
Hosting

Overview

The internal content-management system used by content, review and exam teams. It manages a question inventory end-to-end — authoring with rich text and math, mapping to syllabus, reported-question triage, review and approval — plus exams, master and course syllabus, analytics and AI-assisted mapping.

Architecture

  1. App Router

    A route group per module with shared layouts and client-side data via TanStack Query.

  2. API proxy

    Route handlers forward to the learning platform's content-team APIs.

  3. CI/CD

    GitHub Actions deploy to Vercel with per-branch preview domains for production, dev and integration branches.

What it does

Question inventory

  • Create and edit questions, child questions and syllabus mappings
  • Dropdown options, search and an unused-questions view with KPI filters

Quality workflow

  • Reported-question triage
  • Review and approval flow
  • Change log

Curriculum

  • Exam management
  • Master syllabus and course syllabus
  • Calendar

AI assistance

  • 'Auto Map with AI' syllabus suggestions with filters
  • Image-to-LaTeX conversion through a vision service

Authoring

  • Lexical and React Quill editors
  • KaTeX and self-hosted MathJax rendering
  • Drag-and-drop ordering with dnd-kit

Insights & admin

  • Analytics and insights dashboards with Recharts
  • Stickers, user management and settings
  • Onboarding welcome flow

Platform

  • Next.js route handlers proxying the Django backend
  • Token auth and Zod validation
  • Vitest contract tests for LaTeX normalisation

Engineering decisions

Math everywhere

Questions mix rich text, LaTeX and images; invalid LaTeX is normalised before render, covered by contract tests.

Release discipline

An integration branch feeds versioned release branches into production, each with branch-scoped preview domains.