- Supabase authentication (email/password + Google OAuth)
- Local fallback auth mode for development
- Onboarding flow that assigns a role to each user
Users choose a role during onboarding:
StudentTeacherWriterFreelancerProject Manager
Each role prepares the workspace for future template boards.
- Create boards from the sidebar
- Boards are saved in Supabase
- Boards load automatically on application start
- Boards are filtered by authenticated user
- Global state handled through React Context + Reducer pattern
- Actions implemented for:
ADD_BOARDSET_BOARDSUPDATE_BOARDDELETE_BOARD
- Service layer (
boardService.ts) handles Supabase operations - Clean separation between UI, state, and database logic
The application follows a layered architecture:
UI Components
→ React Context (State Management)
→ Service Layer (Database Operations)
→ Supabase Backend
Key modules:
components/– UI components (Sidebar, Dashboard, Views)contexts/– Global state and authenticationservices/– Database interaction logiclib/– Supabase client configuration
- The app’s auth file src/contexts/AuthContext.tsx got broken (it had invalid JSON text instead of React code).
- Because of that, TypeScript/build failed and auth flow in App.tsx could not work.
- My old Supabase project is expired, so live auth could not be trusted anyway.
- Rebuilt AuthContext.tsx from scratch.
- Added two working auth modes:
- Supabase mode (normal, real backend)
- Local fallback mode (works without Supabase)
-
- Local fallback stores user/profile in browser localStorage so login + onboarding still work.
-
- Cleaned App.tsx auth routing logic (loading, login, onboarding, dashboard).
-
- Fixed TypeScript/lint errors in related components.
-
- Updated .env.example with VITE_BYPASS_AUTH option.
- Type check passes.
- Lint has no errors (only minor warnings).
- App can run even if Supabase is unavailable, using local mode.
- Create a
.envfile. - For immediate run (no Supabase): set
VITE_BYPASS_AUTH=true. - For real auth later:
-
- create new Supabase project
-
- run SQL migrations
-
- set
VITE_SUPABASE_URLandVITE_SUPABASE_ANON_KEY
- set
-
- set
VITE_BYPASS_AUTH=false
- set