Design decisions
These pages record the choices that shape Dotpress, and why they were made: the context, the decision, the alternatives that were set aside, and the consequences, good and bad. They explain why the API looks the way it does, and what to expect from it.
They share a few principles:
- The core depends on no HTTP server. No Express, Fastify or Hono in
@dotpress/core. - Plugins do not know their adapter. A plugin that needs a specific server is a design smell.
- Services work on their own. The mailer, the event bus and the cache run in a script or a worker, without an app.
- Types are inferred, not declared. You write schemas; the types follow.
- Sensible defaults, everything configurable.