Arman
All work

01 / Flagship case study

Full-stack engineering · Backend / APIs · Frontend / product UI

SlateDesk

Assignment and submission management across Admin, Teacher, and Student workflows.

SlateDesk admin workspace showing academic operations, people, classes, assignments, and submissions at a glance.
Admin operations overview
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.

Next.js frontend

Role-specific Admin, Teacher, and Student workspaces

ASP.NET Core API

Versioned routes, authentication, authorization, and Problem Details

Application layer

DTOs, service interfaces, request models, and use-case contracts

Domain layer

Entities, enums, role constants, and academic concepts

Infrastructure layer

EF Core, Identity, workflow services, and background workers

PostgreSQL

Migrated persistence, indexes, query filters, and xmin row versions

System relationships

  1. The browser uses the Next.js application, which calls the versioned ASP.NET Core API.
  2. The API invokes application contracts; the application layer coordinates domain concepts and infrastructure implementations.
  3. 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

  1. The API verifies role, resource ownership, Teacher allocations, Student enrollment, assignment visibility, and submission ownership; frontend guards remain a user-experience layer only.

  2. A background worker synchronizes expired Published assignments to Closed, while each submission command independently evaluates the UTC deadline and late/resubmission rules.

  3. Submission and grading updates map PostgreSQL xmin as a row version. A stale update returns 409 Conflict instead of overwriting newer work.

  4. 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.

SlateDesk teacher assignment ledger showing a published assignment, submission count, and workflow controls.
Teacher assignment 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