Documentation Role guide

System Code and Directory

Use this section as an orientation map for the EduSync codebase. It explains the frontend/backend boundaries, shows how a screen request reaches persistence, and provides source-linked examples. The directory trees describe the purpose of each tracked directory; dependency, build-output, cache, runtime, log, and secret-bearing folders are intentionally excluded.

Frontend · React, TypeScript, and Vite

Route components under src/pages compose shared and feature-specific UI from src/components. Route definitions and role access metadata live under src/navigation. Hooks, contexts, and src/lib hold reusable behavior, API access, generated Orval hooks, and model types. Generated clients should be regenerated from the API contract rather than edited by hand.

Read the frontend README

Backend · .NET layered architecture

API defines HTTP routes and response metadata. APPLICATION owns request/response DTOs and service contracts; DOMAIN contains business entities and static definitions. INFRASTRUCTURE implements those contracts with EF Core, migrations, integrations, reports, caching, and seed data. TOOLS holds supporting utilities.

Read the backend README

How a screen request moves through the system

  1. Route and pageThe role route selects a React page, which owns screen state and composes shared UI.
  2. Generated API hookOrval hooks in src/lib/orval call the typed endpoint and expose query or mutation state.
  3. API controllerHTTP attributes bind route, query, and body values; response metadata documents the endpoint contract.
  4. Application contractThe controller calls an injected service interface using request DTOs and shared query/result types.
  5. Infrastructure serviceGeneric CRUD is extended with feature rules, EF Core queries, and transactions where required.
  6. Domain and persistenceEntities and mappings shape database writes and the response DTO returned to the page.

Code examples from this repository

These are selected excerpts from working source files, not standalone samples. Read the file link for surrounding validation, mapping, error handling, and UI details. The frontend example shows a generated query hook feeding a shared list; backend examples move from HTTP action to service contract and implementation.

Frontend and backend directory trees

Browse from the project root into the feature or platform area you need.

How to read the tree: indentation shows parent-child folders. Each entry includes its documented purpose; a structural-parent note marks an intermediate folder needed to make the hierarchy readable. Use the README links above for setup and project-level conventions.