coyote3

Blueprints, Routes, and UI Ownership

This chapter documents module ownership boundaries so new work is added in the correct layer.

Ownership model

Each blueprint owns:

Home blueprint

Module:

Primary responsibilities:

Key routes:

DNA blueprint

Module:

Primary responsibilities:

Key routes:

RNA blueprint

Module:

Primary responsibilities:

Key routes:

Common blueprint

Module:

Primary responsibilities:

Key routes:

Dashboard blueprint

Module:

Primary responsibilities:

Admin blueprint

Module:

Primary responsibilities:

Template ownership

Global shared templates:

Feature templates should remain under the owning blueprint. Cross-blueprint template dependencies should be minimized.

Tailwind CSS build and references

Tailwind is built from project sources and emitted to a single generated stylesheet used by templates.

Source and config:

Generated output:

Where templates load the generated CSS:

Build commands (run from repo root):

npm install
npm run build:css

Development watch mode:

npm run dev:css

Keep npm run dev:css running while editing templates or Tailwind sources so coyote/static/css/tailwind.css stays current.

Access enforcement contract

Route handlers enforce access with decorators. Template-level hiding is not sufficient.

Required pattern for state-changing routes:

  1. authentication requirement
  2. permission requirement
  3. sample-access requirement when sample-scoped

Extension rules

  1. Add route in the owning blueprint only.
  2. Keep business logic in handlers/utilities, not templates.
  3. Keep templates presentation-focused.
  4. Reuse existing helper services before adding new cross-module utilities.
  5. Update handbook chapter references when route ownership changes.