General approach
- Read the relevant route, component, or Convex module before changing it.
- Keep new behavior close to the owning feature area.
- Prefer extending existing patterns over introducing parallel abstractions.
Branching and changes
- Expect the working tree to be dirty sometimes.
- Do not revert unrelated user changes.
- Keep feature work scoped and isolated.
Code organization conventions
- Put feature UI in the nearest feature folder under
components/.
- Keep low-level primitives in
components/ui/.
- Put shared helpers in
lib/.
- Add new schema and indexes in
convex/schema.ts before writing dependent queries or mutations.
Backend conventions
- Use
getCurrentUser() and capability checks where appropriate.
- Use typed Convex IDs consistently.
- Keep payment, release, and support flows in their existing domain modules instead of creating catch-all utility files.
Documentation conventions
- Keep platform docs in
docs-site/docs/.
- Update docs when adding new public routes, env vars, or operational flows.
- Prefer documenting actual repo behavior, not intended behavior.