Backend entity patterns - services with DI, Drizzle schemas (3-file pattern), ORPC routers, TypeIDs, neverthrow. Use when creating services, schemas, routers, or new entities.
Use this skill when building backend features. Follow these patterns for consistency.
Replace these placeholders for your project:
@project/ → your package scope (e.g., @myapp/)packages/ paths follow standard monorepo layoutExpected packages:
@project/db - Drizzle database client, DB_SCHEMA export@project/shared - TypeIDs, constants, shared schemas@project/logger - Pino logger wrapper| Entity Type | Pattern | Files to Create/Modify |
|---|---|---|
| Service | Factory function with deps, neverthrow | packages/api/src/services/xxx-service.ts, context.ts |
| Schema | 3-file pattern | .db.ts, , in |
.zod.ts.relations.tspackages/db/src/schema/| Router | ORPC procedures, Result→Error mapping | packages/api/src/routers/xxx-router.ts, routers.ts |
| TypeID | Prefixed ID | packages/shared/src/typeid.schema.ts |
.match() in routers (see router.md)as const + z.enum() pattern (see schema.md)packages/shared/src/typeid.schema.tspackages/db/src/schema/{domain}/packages/api/src/services/packages/api/src/context.tspackages/api/src/routers/packages/api/src/routers/routers.tsbun run db:generate if schema changed