Overview
kxinspectfrontendflutter is a fixture-first Flutter app for the Contesting Charges assignment. It runs the full Accept/Contest journey with no backend, yet can be flipped to the FastAPI mock via a single --dart-define without changing widgets or BLoCs.
Frontend Module Atlas
kxinspectfrontendflutter is a student-facing Flutter app for the KxInspections Contesting Charges interview assignment. A student lives in a booked property (BKG-001), receives an inspection report, is charged for damage/cleaning (CHG-001…), and must Accept or Contest (reason 10–2000 graphemes + 0–5 attachments) before a 30-day deadline auto-accepts. This atlas maps every Dart module — 187 files, ~22k LOC excluding generated kx_database.g.dart — so you can jump to the owner of any behavior.
Architecture
Layer cake
Bootstrap & DI
Bootstrap sequence
Routing
Single sourcecreateAppRouter. Built on gorouter 17.4. All navigation uses typed KxRoutes names; direct URL load and browser back are first-class.
State Management
Stack: bloc 9.1 + flutter_bloc, equatable, global AppBlocObserver for logging.
Design System
Single barrel: lib/designsystem/designsystem.dart. Zero feature/contract/network import — enforced by designsystempurity_test.dart.
Data Layer
Two adapters, one store
Offline & Live Sync
Bonus B-03 (offline outbox) + B-02 notification sync + P-01 mock-backend co-operation.
Maintenance Hub
Route /maintenance?tab=open|history — the launch screen (lib/features/maintenance/presentation/...). Aggregates booking, inventory, inspections, tasks, charges, notifications from LocalStore.hubSnapshotStream.
Inspection Detail
Route /inspections/:inspectionId — lib/features/inspection/presentation/....
Charge & Contest
Routes /charges/chargeId/contest plus /charges/photoIndex. This is the core lifecycle surface — every bonus except statement converges here.
Statement
Route /statement?chargeId=CHG-... — bonus B-05. Read-only ledger of unpaid charges and mock Pay.
Notifications
Bonus B-02 — event-triggered local/browser notification on chargeRaised, plus in-app feed and badge.
L10n & Theming
Strings
Testing
One command