A full-featured education management platform for conducting assessments from creation to publication. Built for institutions and independent educators who need a complete workflow covering exam building, student management, auto-grading, and performance reporting.
Tutor Desk supports three distinct user roles, each with their own dashboard and capabilities:
- Super Admin — Platform-wide oversight: approve/suspend teachers, configure system settings, view cross-institution analytics
- Teacher — Manage subjects, build MCQ exams, assign them to students, auto-evaluate submissions, upload learning assets, and export PDF/CSV reports
- Student — Browse enrolled subjects, take assigned exams, review scored submissions with feedback, and access shared learning materials
| Layer | Technology |
|---|---|
| Frontend | Angular 21 (standalone components, signals, SSR, PWA) |
| Backend | Go 1.24 REST API |
| Database | PostgreSQL 17 (Docker) |
| UI Components | PrimeNG 21 + Tailwind CSS 4 |
| Monorepo | Nx 22 |
| Auth | Stateless JWT |
| API Docs | Swagger (auto-generated) |
tutor-desk/
├── workspace/ # Nx monorepo root
│ ├── apps/
│ │ ├── web/ # Angular 21 frontend
│ │ └── api/ # Go REST API
│ └── ...
└── documents/ # Project requirements and specs
Prerequisites: Bun, Go 1.24+, Docker & Docker Compose
# Install dependencies
bun install
# Start PostgreSQL (Docker)
docker compose up -d
# Start the Go API
bun run api:dev
# Start the Angular frontend
bun run startThe frontend runs at http://localhost:4200 and the API at http://localhost:8080.
Swagger docs are available at http://localhost:8080/swagger/index.html.
bun run build:prod # Production build
bun run test:unit # Unit tests (Vitest)
bun run test:e2e # E2E tests (Playwright)
bun run lint:fix # Auto-fix linting issues
bun run api:docs # Regenerate Swagger API docs
bunx nx graph # Interactive dependency graphThe REST API is versioned under /api/v1 and covers:
auth— Login, signup, token refresh, password managementteachers/students— Role-specific user managementsubjects— Subject CRUD and student enrollmentexams/questions— Exam lifecycle and MCQ question managementsubmissions— Exam-taking and auto-evaluationassets/comments— Learning materials and threaded commentsadmin— Super-admin dashboard and reportingsettings— System configuration
- Role-based access control enforced at both route guard (frontend) and middleware (API) levels
- Signal-based state via NgRx SignalStore with OnPush change detection throughout the Angular app
- Standalone Angular components — no NgModules
- Connection pooling via
pgxfor efficient PostgreSQL access - Containerized database with automatic schema and seed initialization
- SSR + PWA for performance and offline support
workspace/README.md— Detailed setup, architecture, and API referencedocuments/requirements.md— Original feature specifications