01 / Flagship case study
Full-stack engineering · Backend / APIs · Frontend / product UI
Slate Desk
Assignment and submission management across Admin, Teacher, and Student workflows.

- Type
- Full-stack engineering · Backend / APIs · Frontend / product UI
- Status
- Repository project
- Core stack
- Next.js / React / TypeScript / TanStack Query / React Hook Form
- Repository
- Public repository
Project overview
SlateDesk is a full-stack assignment and submission management system with distinct Admin, Teacher, and Student workspaces. The repository keeps authorization and academic business rules authoritative in the ASP.NET Core backend.
01
A modular monolith with explicit boundaries
The repository separates the browser experience, HTTP boundary, application contracts, domain concepts, and infrastructure while keeping deployment within one application system.
Role-specific Admin, Teacher, and Student workspaces
Versioned routes, authentication, authorization, and Problem Details
DTOs, service interfaces, request models, and use-case contracts
Entities, enums, role constants, and academic concepts
EF Core, Identity, workflow services, and background workers
Migrated persistence, indexes, query filters, and xmin row versions
System relationships
- The browser uses the Next.js application, which calls the versioned ASP.NET Core API.
- The API invokes application contracts; the application layer coordinates domain concepts and infrastructure implementations.
- The infrastructure layer connects persistence, authentication, and background processing to PostgreSQL.
02
One academic workflow, three permission contexts
The interface changes by role, while the API remains the authority for what each account may read or change.
- Administration
- Academic setup, Teacher and Student accounts, class and subject allocation, enrollment, settings, and cross-workflow visibility.
- Teaching
- Draft, publish, close, archive, review, mark, and feedback workflows for assignments owned by the Teacher.
- Student work
- Published-assignment discovery, draft answers, submission and allowed resubmission, status, marks, and feedback.
03
Correctness at the backend boundary
The API verifies role, resource ownership, Teacher allocations, Student enrollment, assignment visibility, and submission ownership; frontend guards remain a user-experience layer only.
A background worker synchronizes expired Published assignments to Closed, while each submission command independently evaluates the UTC deadline and late/resubmission rules.
Submission and grading updates map PostgreSQL xmin as a row version. A stale update returns 409 Conflict instead of overwriting newer work.
Short-lived access tokens are paired with HttpOnly refresh cookies, hashed refresh-token storage, rotation, replay detection, and token-family revocation.
04
Assignment lifecycle evidence
The Teacher ledger exposes assignment state, submission volume, and the controls that move work through the documented workflow.

05
Testing the rules that carry risk
The backend test projects target authentication replay, assignment ownership, deadline policy, closing behavior, submission rules, grading concurrency, query filters, and exception handling. The repository uses xUnit with isolated EF Core test support for these rule-focused checks.
06
Technical stack in the repository
- Next.js
- React
- TypeScript
- TanStack Query
- React Hook Form
- Zod
- Lucide
- Recharts
- .NET 10
- ASP.NET Core
- PostgreSQL
- xUnit