- Create missing Plan 01-07 (password reset navigation) - Update Plan 01-10 to contain logout functionality (covers AUTH-05) - Split Plan 01-04 into Plans 01-04 and 01-11 (2-3 tasks each) - Fix dependency references throughout phase - Update ROADMAP.md to reflect 11 plans in 4 waves
118 lines
4.0 KiB
Markdown
118 lines
4.0 KiB
Markdown
---
|
|
phase: 01-authentication
|
|
plan: 11
|
|
type: execute
|
|
wave: 2
|
|
depends_on: ["01-04"]
|
|
files_modified: ["lib/app/router.dart", "lib/presentation/pages/splash_page.dart", "lib/main.dart"]
|
|
autonomous: true
|
|
user_setup: []
|
|
|
|
must_haves:
|
|
truths:
|
|
- "Navigation works based on authentication status"
|
|
- "App starts with splash screen and navigates appropriately"
|
|
- "Protected routes redirect to login when not authenticated"
|
|
artifacts:
|
|
- path: "lib/app/router.dart"
|
|
provides: "Auth-based navigation"
|
|
min_lines: 40
|
|
- path: "lib/presentation/pages/splash_page.dart"
|
|
provides: "Initial loading screen"
|
|
min_lines: 20
|
|
key_links:
|
|
- from: "lib/providers/auth_provider.dart"
|
|
to: "lib/app/router.dart"
|
|
via: "auth state listening"
|
|
pattern: "onAuthStateChange|authStateChanges"
|
|
- from: "lib/app/router.dart"
|
|
to: "lib/presentation/pages/splash_page.dart"
|
|
via: "initial navigation"
|
|
pattern: "splash|initial"
|
|
---
|
|
|
|
<objective>
|
|
Implement auth-aware navigation system and app integration.
|
|
|
|
Purpose: Create navigation system that protects routes and responds to authentication changes.
|
|
Output: Complete navigation system with protected routes and proper app initialization.
|
|
</objective>
|
|
|
|
<execution_context>
|
|
@~/.opencode/get-shit-done/workflows/execute-plan.md
|
|
@~/.opencode/get-shit-done/templates/summary.md
|
|
</execution_context>
|
|
|
|
<context>
|
|
@.planning/PROJECT.md
|
|
@.planning/ROADMAP.md
|
|
@.planning/STATE.md
|
|
@.planning/phases/01-authentication/01-RESEARCH.md
|
|
</context>
|
|
|
|
<tasks>
|
|
|
|
<task type="auto">
|
|
<name>Create auth-aware navigation system</name>
|
|
<files>lib/app/router.dart, lib/presentation/pages/splash_page.dart</files>
|
|
<action>
|
|
Create navigation system with:
|
|
|
|
1. SplashPage that:
|
|
- Shows while checking initial auth state
|
|
- Navigates to login or home after auth check
|
|
- Has proper loading indicator
|
|
- Handles app startup sequence
|
|
|
|
2. Router configuration that:
|
|
- Uses GoRouter for declarative routing
|
|
- Has protected routes (redirect to login if not authenticated)
|
|
- Has public routes (login, signup, password reset)
|
|
- Listens to AuthProvider for auth state changes
|
|
- Includes proper route definitions:
|
|
- / → redirect based on auth state
|
|
- /login → login page
|
|
- /signup → signup page
|
|
- /home → protected home route (placeholder)
|
|
- Handles deep linking properly
|
|
- Includes proper error handling for navigation
|
|
</action>
|
|
<verify>Navigation correctly redirects based on authentication status and all routes are accessible</verify>
|
|
<done>Complete navigation system that protects routes and responds to authentication changes</done>
|
|
</task>
|
|
|
|
<task type="auto">
|
|
<name>Integrate auth system with main app</name>
|
|
<files>lib/main.dart</files>
|
|
<action>
|
|
Update main.dart to:
|
|
1. Wrap MyApp with appropriate providers (Riverpod/ChangeNotifierProvider)
|
|
2. Initialize AuthProvider with AuthRepositoryImpl
|
|
3. Configure router with auth state integration
|
|
4. Set up proper error boundaries
|
|
5. Ensure proper initialization order
|
|
6. Add proper app structure with MaterialApp.router
|
|
7. Configure theme and other app-level settings
|
|
8. Ensure proper disposal of resources
|
|
</action>
|
|
<verify>App starts with splash screen, properly checks auth state, and navigates to appropriate initial screen</verify>
|
|
<done>Complete app integration with authentication system</done>
|
|
</task>
|
|
|
|
</tasks>
|
|
|
|
<verification>
|
|
1. Navigation system properly protects routes and redirects based on auth status
|
|
2. App starts with splash screen and navigates to appropriate screen
|
|
3. Deep linking works correctly
|
|
4. Error handling covers navigation failures
|
|
5. Auth state changes trigger appropriate navigation updates
|
|
</verification>
|
|
|
|
<success_criteria>
|
|
Complete navigation system with protected routes and proper app integration.
|
|
</success_criteria>
|
|
|
|
<output>
|
|
After completion, create `.planning/phases/01-authentication/01-11-SUMMARY.md`
|
|
</output> |