Tesria

How the code is organized

  • src/Api: the server. Features/ holds one folder per feature (Pages, Spaces, Export and so on), each with its own endpoints; Domain/ the data; Infrastructure/ what the features share, such as the database, permissions, authentication, email and storage; Program.cs wires it together.

  • src/web: the web app, in React and TypeScript. routes/ holds a file per screen, components/ the pieces they share, editor/ the editor, and api/client.ts every call to the server.

  • collab/: the collaboration service. deploy/: the Dockerfiles, Caddy’s configuration, and the backup services’ scripts.

  • tests/Api.Tests: the server’s tests. scripts/: tools, including the screenshot harness and the scripts that write this site.

  • docs/: the architecture, security model, backup runbook, the changelog, and the plan.

Conventions

  • Database changes are migrations. Change the model, then from src/Api run dotnet ef migrations add <Name> --output-dir Infrastructure/Migrations. Under Docker Compose a short migrate service applies them before the app starts; running the app on its own outside production applies them itself.

  • A new kind of block is defined once, in the web app’s editor/extensions.ts, never in one editor alone: the collaboration service and the exports rely on the same definition.

  • What you may not see does not exist. A request for something the caller may not see answers 404, never 403.

  • Every change is written down. An entry in docs/CHANGELOG.md saying what changed and why, and docs/architecture.md updated if how something works has changed.

  • Words people read are in US English, plain and specific, without em dashes. These docs follow scripts/docs/WRITING.md.


Applies to

Tesria 0.6 and later

Updated

September 24, 2026

Changes

Revised.