Skip to main content

Admin CMS Overview

The Admin CMS lets admins create, edit, publish, import, and export Reading/Writing/Listening test content, and manage student accounts — all from within the same desktop app.

src/ui/components/AdminLayout.tsx defines the admin sidebar navigation:

LabelPathPage
Dashboard/adminAdminDashboard
Content Library/admin/contentContentLibrary
Create New/admin/createCreateContent
Import Dataset/admin/importImportDataset
Students/admin/usersUserManagement

(A commented-out "Settings" nav entry exists in source but is not active.)

Known limitation: no RBAC enforcement at the route layer

:::warning /admin/* routes are not role-restricted The database has a user_roles table with student/super_admin values (see Database Schema), and docs/product.md describes a "TS-2 Admin Role Authorization" requirement. However, the current frontend has no authentication or route guard at all — there is no <ProtectedRoute> component, no AuthContext, and no login flow (see Frontend Architecture). Any user running the app can navigate directly to /admin, /admin/content, /admin/create, /admin/import, or /admin/users regardless of their user_roles entries (or lack thereof). This is a known gap between the product spec and the current implementation — see PRD Overview for the corresponding requirement. :::

What admins can do