AZ-002 — Mobile application shell and navigation

Status

Done

Context

Read the epic contract. React Router's reusable appRoutes and AppLayout already exist; Home displays a real database message and * renders not-found. AZ-001 supplies translations and language/appearance preferences. No side menu or MUI exists. All workspace versions are 0.0.0; the root manifest currently has no version field.

Goal

Deliver the mobile-first Foodtruck Order shell with centralized brand/theme, localized icon navigation, simple page registration, and meaningful build/version information.

Requirements

Non-goals

No login/account persistence, custom navigation engine, runtime branding, tenant theme, second icon library, desktop-first dashboard, complex widget library, or new deployment pipeline.

Implementation guidance

Extend frontend/src/app/router.tsx, app/layout/AppLayout.tsx, app/providers.tsx, and existing pages/, components/, vite-env.d.ts, vite.config.ts responsibilities. Keep appRoutes usable with memory routers. Provider factories from AZ-001 isolate theme/query/preference tests. MUI sx base values describe mobile, with larger breakpoint overrides. Use MUI's React Router link integration instead of click-only navigation; decorative item icons need no duplicate label. CI artifact names and API/OpenAPI behavior remain intact. Any new build metadata code must have focused tests; no blanket coverage exclusions for the shell or registry.

Acceptance criteria

Verification

pnpm quality
pnpm --filter @foodtruck-order/frontend test
pnpm --filter @foodtruck-order/frontend test:coverage
pnpm build
pnpm test:ci
pnpm validate:docker

Use isolated Compose validation if preserving development data. Add RTL tests for registry/menu, settings/theme, semantic current links and keyboard behavior; browser tests cover responsive layout, drawer focus and route/deep-link behavior. Introduce a Chromium mobile project (360×800, touch) alongside desktop in both existing Playwright configs, sharing spec behaviors and isolated state. AZ-011 extends reusable accessibility checks, not first mobile testing. Manually inspect 320px, 360×800, 768×1024, 1280×800, short height, 200% zoom, dark contrast and phone scrolling.

Documentation

Update architecture, techstack, development (the exact create/register/icon/translation/test page workflow, root version release process), Docker (metadata versus runtime API config), testing and CI (mobile projects and metadata propagation). Record significant frontend/styling decision in docs/decisions/ and update current-state/handover with evidence.

Dependencies

AZ-001. Existing React Router, API/query/message workflow, host/Compose builds and Playwright.