Backend Standards (Seagull)
When to use
- Adding or refactoring tRPC routers/services in
packages/api. - Changing database schema in
packages/db.
Core rules
- Layering:
- Router layer in
packages/api/src/router(validation, auth, routing only). - Service layer in
packages/api/src/servicesfor business logic and orchestration. - Data access in
packages/db(Drizzle).
- Router layer in
- Naming:
- Files: kebab-case. Variables/functions: camelCase. Types: PascalCase.
- DB: snake_case tables/columns (Drizzle maps to camelCase).
- tRPC:
- Query = read (
get,list,search,byId); Mutation = write (create,update,delete,archive). - Always define Zod inputs.
- Throw
TRPCErrorwith semantic codes.
- Query = read (
- DB:
- Schema split by domain under
packages/db/src/schemaand re-export in index. - Use soft delete via
deletedAtfor core entities.
- Schema split by domain under
Workflow reminders
- Schema change → db migration → router/service updates → frontend usage.
- Run
pnpm lintandpnpm typecheckbefore commit.
Canonical reference
- See
skills/backend-standards/references/backend-standards.mdfor the full policy text and examples.