2.9 KiB
2.9 KiB
AnthoLume Frontend Agent Guide
Read this file for work in frontend/.
Also follow the repository root guide at ../AGENTS.md.
1) Stack
- Package manager:
bun - Framework: React + Vite
- Data fetching: React Query
- API generation: Orval
- Linting: ESLint + Tailwind plugin
- Formatting: Prettier
2) Conventions
- Use local icon components from
src/icons/. - Do not add external icon libraries.
- Prefer generated types from
src/generated/model/overany. - Avoid custom class names in JSX
classNamevalues unless the Tailwind lint config already allows them. - For decorative icons in inputs or labels, disable hover styling via the icon component API rather than overriding it ad hoc.
- Prefer
LoadingStatefor result-area loading indicators; avoid early returns that unmount search/filter forms during fetches.
3) Generated API client
- Do not edit
src/generated/**directly. - Edit
../api/v1/openapi.yamland regenerate instead. - Regenerate with:
bun run generate:api
Important behavior
- The generated client returns
{ data, status, headers }for both success and error responses. - Do not assume non-2xx responses throw.
- Check
response.statusand response shape before treating a request as successful.
4) Auth / Query State
- When changing auth flows, account for React Query cache state.
- Pay special attention to
/api/v1/auth/me. - A local auth state update may not be enough if cached query data still reflects a previous auth state.
5) Commands
- Lint:
bun run lint - Typecheck:
bun run typecheck - Lint fix:
bun run lint:fix - Format check:
bun run format - Format fix:
bun run format:fix - Build:
bun run build - Generate API client:
bun run generate:api
6) Validation Notes
- ESLint ignores
src/generated/**. - Frontend unit tests use Vitest and live alongside source as
src/**/*.test.ts(x). - Read
TESTING_STRATEGY.mdbefore adding or expanding frontend tests. - Prefer tests for meaningful app behavior, branching logic, side effects, and user-visible outcomes.
- Avoid low-value tests that mainly assert exact styling classes, duplicate existing coverage, or re-test framework/library behavior.
bun run lintincludes test files but does not typecheck.- Use
bun run typecheckto run TypeScript validation for app code and colocated tests without a full production build. - Run frontend tests with
bun run test. bun run buildstill runstsc && vite build, so unrelated TypeScript issues elsewhere insrc/can fail the build.- When possible, validate changed files directly before escalating to full-project fixes.
7) Updating This File
After completing a frontend task, update this file if you learned something general that would help future frontend agents.
Rules for updates:
- Add only frontend-wide guidance.
- Do not record one-off task history.
- Keep updates concise and action-oriented.
- Prefer notes that prevent repeated mistakes.