35 lines
1.4 KiB
Markdown
35 lines
1.4 KiB
Markdown
# Conventions
|
|
|
|
## Backend
|
|
|
|
- Use FastEndpoints handlers for API work.
|
|
- Keep request/response records near the handler unless an existing module pattern says otherwise.
|
|
- Add FluentValidation validators for non-trivial input.
|
|
- Use explicit routes and tags.
|
|
- Preserve workspace scoping for workspace-owned data.
|
|
- Keep schema changes in the owning data area and update migrations intentionally.
|
|
|
|
## Frontend
|
|
|
|
- Use `frontend/src/config.js` for runtime configuration.
|
|
- Use the shared Axios API client in `frontend/src/plugins/api.js` for current JavaScript flows.
|
|
- Preserve auth refresh behavior in `authStore` and the API plugin.
|
|
- Route-level authenticated app screens live under `/app/*`.
|
|
- Feature-owned views, stores, composables, constants, utilities, and local components belong under `frontend/src/features/<feature>/`.
|
|
- Keep only cross-cutting app shell, plugins, shared components, and app-wide stores outside feature folders.
|
|
|
|
## Docs
|
|
|
|
- Current feature behavior belongs in `docs/FEATURES/`.
|
|
- Implementation work belongs in `docs/TASKS/<feature>/`.
|
|
- Reusable prompts belong in `docs/PROMPTS/`.
|
|
- Durable decisions belong in `docs/DECISIONS/`.
|
|
- Archived material belongs in `docs/archive/`.
|
|
|
|
## Validation
|
|
|
|
- Backend changes: `dotnet build backend/Socialize.slnx`
|
|
- Backend behavior changes: `dotnet test backend/Socialize.slnx`
|
|
- Frontend changes: `cd frontend && npm run build`
|
|
- Backend contract changes: `./scripts/update-openapi.sh`
|