Files
Sage/.planning/phases/01-authentication/01-04-PLAN.md
Dani B f9150e04d5 docs(01): create phase 1 authentication plans
Phase 1: Authentication & Account Basics
- 7 plans in 4 waves
- Covers AUTH-01 through AUTH-05 requirements
- Foundation for household features in Phase 2
- Ready for execution
2026-01-28 00:26:56 -05:00

6.9 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous, user_setup, must_haves
phase plan type wave depends_on files_modified autonomous user_setup must_haves
01-authentication 04 execute 2
01-01
01-02
lib/providers/auth_provider.dart
lib/features/authentication/data/repositories/auth_repository_impl.dart
lib/app/router.dart
lib/presentation/pages/splash_page.dart
true
truths artifacts key_links
Auth state changes trigger UI updates automatically
Navigation works based on authentication status
Auth repository implementation connects to Supabase
Session persists across app restarts
path provides min_lines
lib/providers/auth_provider.dart Global auth state management 35
path provides min_lines
lib/features/authentication/data/repositories/auth_repository_impl.dart Supabase auth implementation 50
path provides min_lines
lib/app/router.dart Auth-based navigation 40
path provides min_lines
lib/presentation/pages/splash_page.dart Initial loading screen 20
from to via pattern
lib/providers/auth_provider.dart lib/features/authentication/data/repositories/auth_repository_impl.dart dependency injection AuthRepository|_authRepository
from to via pattern
lib/providers/auth_provider.dart lib/app/router.dart auth state listening onAuthStateChange|authStateChanges
from to via pattern
lib/features/authentication/data/repositories/auth_repository_impl.dart supabase.auth Supabase client usage supabase.auth.
Implement authentication state management, Supabase repository, and navigation system.

Purpose: Connect UI components to Supabase authentication, manage auth state globally, and handle navigation based on user authentication status. Output: Working authentication system with session persistence and protected routes.

<execution_context> @/.opencode/get-shit-done/workflows/execute-plan.md @/.opencode/get-shit-done/templates/summary.md </execution_context>

@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md @.planning/phases/01-authentication/01-RESEARCH.md Implement AuthRepository with Supabase lib/features/authentication/data/repositories/auth_repository_impl.dart Create AuthRepositoryImpl class that: 1. Implements AuthRepository interface from plan 02 2. Uses supabase.auth for all operations: - signUp() with email/password, handles AuthResponse - signIn() with email/password, handles AuthResponse - signOut() to clear session - resetPassword() with email and redirect URL - getCurrentUser() from supabase.auth.currentUser - authStateChanges() stream from onAuthStateChange 3. Converts Supabase errors to custom exceptions 4. Maps User to AuthUser model 5. Includes proper null safety handling 6. Has comprehensive error handling 7. Follows repository pattern correctly 8. Uses proper async/await patterns Repository implementation connects to Supabase and handles all auth operations without throwing unhandled exceptions Complete Supabase authentication repository ready for integration with state management Create AuthProvider for state management lib/providers/auth_provider.dart Create AuthProvider class that: 1. Extends ChangeNotifier or uses Riverpod 2. Depends on AuthRepository (injection) 3. Manages auth state (User?, loading, error) 4. Listens to repository.authStateChanges() stream 5. Provides methods: - signUp(String email, String password) - signIn(String email, String password) - signOut() - resetPassword(String email) 6. Handles loading states and errors 7. Updates UI state automatically 8. Properly disposes of stream subscriptions 9. Has current User? getter 10. Includes proper error propagation AuthProvider updates state correctly when auth events occur and maintains loading/error states properly Global auth state management that automatically responds to authentication changes Create auth-aware navigation system lib/app/router.dart, lib/presentation/pages/splash_page.dart 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
Navigation correctly redirects based on authentication status and all routes are accessible Complete navigation system that protects routes and responds to authentication changes Integrate auth system with main app lib/main.dart 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 App starts with splash screen, properly checks auth state, and navigates to appropriate initial screen Complete app integration with authentication system 1. Authentication repository successfully connects to Supabase and handles all auth methods 2. State management responds correctly to auth state changes 3. Navigation system properly protects routes and redirects based on auth status 4. Session persistence works across app restarts 5. Error handling provides user-friendly feedback 6. Loading states work properly during authentication operations

<success_criteria> Complete authentication system with Supabase integration, state management, and protected navigation ready for UI connection. </success_criteria>

After completion, create `.planning/phases/01-authentication/01-04-SUMMARY.md`