Files
motovaultpro/frontend
Eric Gullickson da59168d7b
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 3m25s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 51s
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
fix: IndexedDB cache broken on page reload - root cause of mobile login failure (refs #190)
loadCacheFromDB used store.getAll() which returns raw values, not
key-value pairs. The item.key check always failed, so memoryCache
was empty after every page reload. Auth0 SDK state stored before
redirect was lost on mobile Safari (no bfcache).

Also fixed set()/remove() to await IDB persistence so Auth0 state
is fully written before loginWithRedirect() navigates away.

Added 10s timeout on callback loading state as safety net.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:20:34 -06:00
..
2026-01-03 11:39:02 -06:00
2026-02-05 21:49:35 -06:00

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.ts with 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) and getVehicleSubtitle() (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.