src/main.tsxis the app entry;src/App.tsxis the root component.src/components/holds UI components; each usesComponent.tsxwithComponent.module.css.src/api/contains API clients,src/types/shared types,src/assets/app assets,src/index.cssglobal styles.public/stores static files served by Vite;dist/is the production build output.e2e/contains Playwright end-to-end tests (*.spec.ts).
npm installinstalls dependencies.npm run devstarts the Vite dev server with HMR.npm run buildruns TypeScript build (tsc -b) and outputsdist/.npm run previewserves the production build locally.npm run lintruns ESLint across the repo.npm run testruns Playwright tests headless.npm run test:uiruns Playwright with the UI runner.npm run test:headedruns Playwright in headed mode.
- Use TypeScript + React function components with hooks.
- Indentation: 2 spaces; use semicolons and single quotes to match existing files.
- Components use
PascalCase.tsxand matchingPascalCase.module.css. - Hooks should be named
useSomethinginsrc/hooks/when added. - Types live in
src/types/; prefer explicit types at module boundaries.
- Framework: Playwright (
playwright.config.ts). - Place tests in
e2e/and name them*.spec.ts(example:e2e/app.spec.ts). - Add or update tests for UI behavior changes; no coverage gate is enforced.
- Commit history commonly uses Conventional Commits (
feat:,fix:,refactor:) with optional scopes; keep subjects short and imperative. - Non-English commit messages appear, but keep the style consistent within a series.
- PRs should include a concise description, linked issues if applicable, and before/after screenshots for UI changes.
- Call out any API or env changes in the PR description.
- Copy
.env.exampleto.envand setVITE_API_BASEand optionalVITE_API_TOKEN. - Vite only exposes env vars prefixed with
VITE_.