Home · Apps · rl-main-infra · todo_api · todo_mobile
go_router with routes:
/login (LoginPage)/lists (ListsPage)/lists/todo/:todoId (TodoEditorPage)@riverpodlists, todos, syncQueue, auth)SyncRepository + SyncCoordinator (connectivity-triggered flush)NoopPushNotificationGateway default)flowchart TD
A[App launch] --> B[GoRouter initialLocation=/login]
B --> C[LoginPage: Continue with Auth0]
C --> D[AuthRepository.login() via Auth0 WebAuth]
D --> E[Store id_token in secure storage]
E --> F[unlockWithBiometrics()]
F -->|success| G[context.go('/lists')]
F -->|fail| B
flowchart LR
UI[Pages / Widgets] --> RP[Riverpod Providers]
RP --> LR[ListsRepository / TodosRepository]
LR --> H[(Hive boxes)]
RP --> SR[SyncRepository]
SR --> Q[(syncQueue)]
SR --> GQL[GraphQLClient]
GQL --> API[(GraphQL endpoint)]
NET[Connectivity events] --> SC[SyncCoordinator]
SC --> SR
TodoList, TodoItem).SyncJob entries.SyncCoordinator listens to connectivity changes.syncAll() pushes queued mutations and removes successful jobs.serverWinsclientWins (replay with force: true)manualMerge via injectable hook.show path (not zoned schedule yet).