Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Operational Notes

This project is a service, so operational concerns should be included early.

Suggested First Stack

A simple first production stack:

Rust service
Postgres database
Object storage for uploads
Reverse proxy
OIDC authentication provider

Authentication

Use an authentication boundary that can support multiple providers.

Possible approaches:

  • local accounts first
  • OIDC provider later
  • external identity provider from the beginning

Avoid spreading auth logic across route handlers.

Authorization

Authorization should be domain-aware.

Examples:

Can user view this secret?
Can user edit this continuity?
Can user publish this project page?
Can user mutate this chronology?

Migrations

Use database migrations from the start.

Recommended Rust-friendly options:

  • sqlx migrations
  • refinery
  • sea-orm migrations

Telemetry

Add tracing early.

Useful spans:

  • request ID
  • account ID
  • project ID
  • continuity ID
  • query type
  • permission decision

Backups

Project data is user-created content. Backups are not optional.

Minimum backup targets:

  • database
  • uploaded files
  • published exports

Import and Export

Plan for export early.

Useful formats:

  • JSON project export
  • Markdown export
  • player-facing HTML export
  • continuity archive export