1.5 KiB
1.5 KiB
Project Structure
Top-level layout
client/: frontend applicationserver/: backend applicationshared/: shared TypeScript contracts, permissions, and utility typesDockerfile: production container builddocker-entrypoint.sh: migration-aware startup script
Frontend rules
- Organize code by domain under
src/modules. - Keep app-shell concerns in
src/app. - Keep reusable UI primitives in
src/components. - Theme state and brand tokens belong in
src/theme. - PDF screen components must remain separate from API-rendered document templates.
Backend rules
- Organize domain modules under
src/modules/<domain>. - Keep HTTP routers thin; place business logic in services.
- Centralize Prisma access, auth middleware, and file storage utilities in
src/lib. - Store persistence-related constants under
src/config. - Serve the built frontend from the API layer in production.
Shared package rules
- Place cross-app DTOs, permission keys, enums, and document interfaces in
shared/src. - Keep shared code free of runtime framework dependencies.
Adding a new domain
- Add backend routes, service, and repository/module files under
server/src/modules/<domain>. - Add Prisma models and a migration if the module needs persistence.
- Add permission keys in
shared/src/auth. - Add frontend route/module under
client/src/modules/<domain>. - Register navigation and route guards through the app shell without refactoring existing modules.