buckets/frontend
myrmidex bfaf5c49ed
Some checks failed
CI / backend (push) Failing after 8m48s
CI / frontend (push) Failing after 29s
CI / e2e (push) Has been skipped
53 - Frontend: wire scenario show route and distinct not-found state
2026-07-05 23:27:17 +02:00
..
public 33 - Use theme tokens in primitives and replace template boilerplate 2026-06-28 11:03:16 +02:00
src 53 - Frontend: wire scenario show route and distinct not-found state 2026-07-05 23:27:17 +02:00
.gitattributes 33 - Add Tailwind 4 and port the 80s terminal theme 2026-06-28 02:16:41 +02:00
.gitignore 62 - Close coverage gaps, enable TS strict, add coverage thresholds 2026-06-28 23:26:24 +02:00
.oxlintrc.json 33 - Scaffold Vite + React + TS frontend and add compose node service 2026-06-28 02:06:56 +02:00
.prettierignore 62 - Close coverage gaps, enable TS strict, add coverage thresholds 2026-06-28 23:26:24 +02:00
.prettierrc.json 33 - Add Prettier to the frontend 2026-06-28 02:11:14 +02:00
Dockerfile.dev 52 - Pin npm via single NPM_VERSION env + dev Dockerfiles, gate e2e on healthcheck 2026-06-28 18:29:11 +02:00
index.html 33 - Scaffold Vite + React + TS frontend and add compose node service 2026-06-28 02:06:56 +02:00
package-lock.json 62 - Close coverage gaps, enable TS strict, add coverage thresholds 2026-06-28 23:26:24 +02:00
package.json 62 - Close coverage gaps, enable TS strict, add coverage thresholds 2026-06-28 23:26:24 +02:00
README.md 33 - Use theme tokens in primitives and replace template boilerplate 2026-06-28 11:03:16 +02:00
tsconfig.app.json 62 - Close coverage gaps, enable TS strict, add coverage thresholds 2026-06-28 23:26:24 +02:00
tsconfig.json 33 - Scaffold Vite + React + TS frontend and add compose node service 2026-06-28 02:06:56 +02:00
tsconfig.node.json 62 - Close coverage gaps, enable TS strict, add coverage thresholds 2026-06-28 23:26:24 +02:00
vite.config.ts 62 - Close coverage gaps, enable TS strict, add coverage thresholds 2026-06-28 23:26:24 +02:00

Buckets — Frontend

Standalone React SPA for the Buckets budgeting app. Talks to the Symfony + API Platform backend over a cookie-session API (/api).

Stack

  • Vite + React + TypeScript (strict)
  • Tailwind 4 (@tailwindcss/vite) — dark-only "80s terminal" theme
  • oxlint (lint) + Prettier (format)

Development

The frontend runs as the frontend service in the project's compose stack (podman-compose, dev-only — defined in compose.override.yaml). Bring the stack up from the repo root (dev-up) and the Vite dev server is published on http://localhost:5173.

The dev server proxies /api to the backend container (http://php:80) so the session cookie flows same-origin — no CORS in dev.

Run commands inside the container:

podman exec buckets-budget_frontend_1 npm run build         # tsc -b && vite build
podman exec buckets-budget_frontend_1 npm run lint          # oxlint
podman exec buckets-budget_frontend_1 npm run format        # prettier --write
podman exec buckets-budget_frontend_1 npm run format:check  # prettier --check

Structure

  • src/theme.css — Tailwind import + the 80s terminal theme (OKLCH tokens, glow, 7-segment font)
  • src/components/ui/ — shared primitives (Button, Panel, DigitalProgressBar)
  • src/components/layout/ — the app shell (AppLayout)
  • src/lib/api.ts — cookie-session API client (get/post/patch/delete, JSON-LD)
  • src/types/api.ts — Hydra/JSON-LD envelope types