1.7 KiB
1.7 KiB
Tech Stack Decisions — react-frontend-app
| Concern | Decision | Rationale |
|---|---|---|
| Build tool | Vite | Confirmed in requirements.md NFR-1; fast dev server, first-class TypeScript/React support, pairs naturally with Vitest. |
| Language | TypeScript | Confirmed in requirements.md NFR-1; type safety for the domain entities defined in functional design. |
| UI library | React 18+ | Confirmed in requirements.md NFR-1. |
| Styling | Tailwind CSS | Confirmed in requirements.md NFR-2. Theme variants implemented as Tailwind theme classes (theme-red / theme-purple) per Functional Design Question 2 answer. |
| Routing | TanStack Router, hash-based history (createHashHistory) |
Confirmed in requirements.md FR-5; hash history chosen per this stage's routing-strategy decision (NFR Requirements Question 4) to be safe on a plain FTP static host without server rewrite rules. |
| Data fetching (forward-looking) | TanStack Query (@tanstack/react-query) |
Confirmed in requirements.md FR-5; a QueryClientProvider is set up now, with one placeholder query hook (usePackagesQuery) as defined in Functional Design. |
| Testing | Vitest + React Testing Library | NFR Requirements Question 2 answer A. |
| Linting | ESLint (typescript-eslint, eslint-plugin-react-hooks) + Prettier |
NFR Requirements Question 3 answer A. |
| Package manager | npm (with committed package-lock.json) |
Default choice for a Vite-scaffolded project; supports SECURITY-10 (lock file requirement). |
| CI | None for this iteration | NFR Requirements Question 6 answer B — deferred to Operations phase. |
| Accessibility | Best-effort (no formal WCAG target this iteration) | NFR Requirements Question 5 answer B; explicit a11y attributes from Functional Design are still implemented. |