| j / k | Scroll down / up |
| gg | Scroll to top |
| G | Scroll to bottom |
| ⌘K / / | Open search |
| ? | Show this help |
| Esc | Close search / help |
| n / N | Next / previous section |
| h | Go to landing |
| d | Go to docs |
| : | Command mode — type section name |
Press ? or Esc to close
A feature-first Flutter architecture. Everything lives under features/; shared, stateless services live under config/. The goal is predictability: any developer can open any feature and know exactly where things are.
UI reads state from a Cubit. The Cubit calls a Store. The Store orchestrates a DataSource (network) and optionally a Local (cache). All errors are caught centrally and surfaced through overlays — never thrown to the UI.
| Layer | Owns | Knows about |
|---|---|---|
| Presentation | Widgets only | Cubit state, design tokens |
| Logic (Cubit) | UI state | Store |
| Store | Data orchestration | DataSource, Local |
| DataSource / Local | Raw I/O | Nothing above them |
| Config / Core | Global services | Other config only |
| Concern | Library |
|---|---|
| Routing | go_router |
| State | flutter_bloc (Cubit only) |
| DI | get_it |
| Network | dio |
| Local cache | sqflite (opt-in) |
| Persistence | shared_preferences, flutter_secure_storage |
| Connectivity | connectivity_plus |
| Firebase | analytics · crashlytics · messaging · remote_config |
| Logging | logger |