All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 3m24s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 52s
Deploy to Staging / Verify Staging (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 7s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Rename "Schedule Maintenance" to "Add Maintenance", match contained button style to "Add Fuel Log", and open inline MaintenanceRecordForm dialog on click. Applied to both desktop and mobile views. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Frontend Quickload
Overview
- Tech: React 18, Vite, TypeScript, MUI, Tailwind, React Query, Zustand.
- Auth: Auth0 via
src/core/auth/Auth0Provider.tsx. - Data: API client in
src/core/api/client.tswith React Query config.
Commands (containers)
- Build:
make rebuild - Logs:
make logs-frontend
Structure
src/App.tsx,src/main.tsx— app entry.src/features/*— feature pages/components/hooks.src/core/*— auth, api, store, hooks, query config, utils.src/core/utils/vehicleDisplay.ts— shared vehicle display helpers:getVehicleLabel()(display name with fallback chain) andgetVehicleSubtitle()(Year Make Model formatting).src/shared-minimal/*— shared UI components and theme.
Mobile + Desktop (required)
- Layouts responsive by default; validate on small/large viewports.
- Verify Suspense fallbacks and navigation flows on both form factors.
- Test key screens: Vehicles, Fuel Logs, Documents, Settings.
- Ensure touch interactions and keyboard navigation work equivalently.
Testing
- Jest config:
frontend/jest.config.ts(jsdom). - Setup:
frontend/setupTests.ts(Testing Library). - Run:
docker compose exec mvp-frontend npm test(from project root, containerized). - Watch mode:
docker compose exec mvp-frontend npm run test:watch.
Patterns
- State: co-locate feature state in
src/core/store(Zustand) and React Query for server state. - Forms:
react-hook-form+ Zod resolvers. - UI: MUI components; Tailwind for utility styling.