You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**State Management**: Provider with ChangeNotifier classes.
59
+
**State Management**: Provider with ChangeNotifier classes. DataStore in `data/data_store.dart` is the single source of truth, loaded with SampleData on startup for offline mode.
57
60
58
61
**Navigation**: GoRouter with nested shell routes:
**Authentication**: Firebase Auth with Google Sign-In.
64
68
69
+
**Responsive Design**: `utils/responsive.dart` with breakpoints defined in `themes/design_tokens.dart` — mobile (<600), tablet (600-839), desktop (840+), large desktop (1200+). Grid columns, gutters, and margins adapt per breakpoint.
**E-ink Mode**: Theme-based approach — `AppTheme.eink` handles grayscale colors; widgets use theme colors, not hardcoded values. No separate widget builds. 4 remaining e-ink-specific widgets for structurally different navigation components.
74
+
75
+
**Widgets**: Feature-based directory organization under `widgets/` (auth/, book/, library/, dashboard/, shell/, etc.). Reuse shared components from `widgets/shared/`.
76
+
77
+
### Tests
78
+
79
+
29 test files covering models, providers, widgets, services, and utils. Run with `flutter test` from `client/`.
80
+
65
81
## Server (Python/FastAPI)
66
82
67
83
### Commands
@@ -99,8 +115,9 @@ pytest --cov # Run with coverage
To visually explore the running Flutter web app using Chrome MCP (`mcp__claude-in-chrome__*`):
189
+
190
+
1. Start the web server: `flutter run -d web-server --web-port=8080` from `client/`
191
+
2. Navigate to `http://localhost:8080` using `mcp__claude-in-chrome__navigate`
192
+
3. Use `mcp__claude-in-chrome__computer` with `screenshot` action to capture current state
193
+
4. Use `left_click` with coordinates to interact with UI elements
194
+
195
+
**Notes:**
196
+
197
+
- Flutter web uses CanvasKit (canvas rendering) — Playwright MCP cannot interact with elements, but Chrome MCP `computer` tool works via coordinate-based clicks
198
+
- Click "Use offline mode" on the welcome page to bypass auth for local testing
199
+
163
200
## Project Resources
164
201
165
202
-**Documentation**: `docs/` directory, run `mkdocs serve` to browse locally
0 commit comments