We welcome contributions! Here's how to get started:
- Select an issue: Browse the Github issues page and select an issue you'd like to work on.
- Create a branch: Create a new branch named after the issue number, such as
issue-17(replace17with the actual issue number). - Make your changes: Implement the changes needed to address the issue.
- Create a pull request: Submit a pull request with your changes, referencing the issue number in the description.
Before submitting your pull request, make sure to:
- Run
npm run testto ensure code quality, verify TypeScript types, and run the E2E tests. - Run
npm run check:i18nwhen your change adds/updates message ids and you are keeping locale files fully in sync. - Test your changes locally with
npm run dev
- Add at least one automated test for each feature change at the right level:
- unit/integration for local logic
- E2E for cross-page, user-critical journeys
- Keep the baseline Cypress suite small and representative so it stays easy to migrate to other frameworks.
- Prefer updating existing E2E contract specs (
auth,accessibility,i18n,seo) before adding many new E2E files.
Use boundary placement by latency domain (Suspense) and failure domain (ErrorBoundary):
- Route-level loading boundaries
- Feature-level loading/failure boundaries where sections are independent
- App-level catastrophic error boundary
Canonical guidance lives in docs/ARCHITECTURE.md (UI failure/latency boundaries section).