Files
pedwfrontend/context/coding-conventions.md

2.1 KiB

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.