53 lines
2.1 KiB
Markdown
53 lines
2.1 KiB
Markdown
# Coding Conventions (Repository-Specific)
|
|
|
|
## Language and Style
|
|
|
|
- Default to JavaScript for new work unless area is already TypeScript.
|
|
- Use existing formatting:
|
|
- 4 spaces
|
|
- no trailing commas
|
|
- preserve existing quote style in touched file
|
|
- Avoid broad stylistic rewrites in functional changes.
|
|
|
|
## File Placement and Boundaries
|
|
|
|
- Keep `pages/` focused on route wiring, data fetch orchestration, and composition.
|
|
- Move reusable domain logic into `lib/` or `actions/`.
|
|
- Keep reusable UI in `components/` (feature subfolders preferred).
|
|
- Keep Redux behavior changes localized to relevant slice and `store/store.js` integration points.
|
|
|
|
## API Route Conventions
|
|
|
|
- Follow existing API naming where present (`*_api.js` in `pages/api/endpoint`, `pages/api/file`, `pages/api/admin`).
|
|
- Maintain explicit error handling and return predictable response shapes.
|
|
- For sensitive endpoints, include authorization and invalid-input paths.
|
|
|
|
## Auth/Session Conventions
|
|
|
|
- `pages/api/auth/[...nextauth].js` is authoritative for auth flow behavior.
|
|
- Do not bypass session checks in protected routes/components.
|
|
- Preserve secure redirect/callback behavior and cookie safety settings.
|
|
|
|
## i18n Conventions
|
|
|
|
- Add user-facing strings to locale files (`locales/en`, `locales/cy`) where feasible.
|
|
- Keep EN/CY route behavior aligned when adding/changing pages.
|
|
- If a route alias changes in Welsh, verify rewrite mapping in `next.config.js` and page namespaces in `i18n.js`.
|
|
|
|
## Accessibility Conventions
|
|
|
|
- Use semantic HTML and maintain heading hierarchy.
|
|
- Ensure keyboard access and visible focus states.
|
|
- Provide meaningful labels and error messages.
|
|
|
|
## Logging and Error Handling
|
|
|
|
- Never log secrets, tokens, personal details, or raw credential payloads.
|
|
- Keep operational logs concise and safe for production telemetry.
|
|
- Prefer structured, actionable errors over generic catch-and-ignore patterns.
|
|
|
|
## Legacy and Mixed-Pattern Guidance
|
|
|
|
- Where conventions conflict between folders, follow the dominant local pattern and record exceptions in `memory-bank/decisions.md`.
|
|
- Refactor incrementally: separate behavior changes from structural cleanup.
|