- ALWAYS use port 3000 - This is the ONLY acceptable port for the development server
- Never use port 3001, 3002, or any other port
- BEFORE starting the dev server, ALWAYS check if it's already running - Check if
http://localhost:3000is accessible - IF PORT 3000 IS IN USE, JUST USE IT! DO NOT KILL IT OR START A NEW SERVER!
- NEVER start a new dev server if one is already running on port 3000
- All Playwright tests MUST use
http://localhost:3000
- ALWAYS visually verify your work using Playwright browser automation
- Never assume your changes work without visual confirmation
- After making UI changes:
- Start the dev server on port 3000
- Use Playwright to navigate to the page
- Take screenshots to verify the visual appearance
- Test responsive behavior at different viewport sizes (mobile, tablet, desktop)
- Verify all interactive elements work as expected
- All automated tests must use
http://localhost:3000 - Test both desktop and mobile viewports
- Verify visual appearance matches requirements before completing work
- Don't trust class names alone - verify the actual rendered output
- Make code changes
- CHECK if dev server is already running (test if
http://localhost:3000is accessible) - ONLY if not running, start dev server on port 3000
- Use Playwright to visually verify changes
- Test responsive behavior
- Only then confirm work is complete
- ❌ Starting a new dev server without checking if one is already running
- ❌ Assuming Tailwind classes are working without visual verification
- ❌ Using ports other than 3000
- ❌ Not testing mobile responsive behavior
- ❌ Trusting that HTML has correct classes without seeing the rendered output
VITE_SUPABASE_URL- Supabase project URL (required)VITE_SUPABASE_ANON_KEY- Supabase anonymous key (required)VITE_ENABLE_SIGNUP- Enable/disable user registration (trueorfalse, defaults to disabled)VITE_HOME_URL- Optional redirect URL after authentication. If set, users will be redirected here after sign-in. Can be external (https://example.com) or internal (/dashboard). If not set, users stay on the home page (/).
src/lib/supabase.ts- Supabase client configurationsrc/lib/auth-redirect.ts- Handles post-authentication redirect logicsrc/lib/auth-appearance.ts- Supabase Auth UI themingsrc/pages/- Page components using Supabase Auth UIsrc/routes/- TanStack Router route definitionssrc/router.ts- Router configuration
- Users accessing protected routes are redirected to
/sign-in - Sign-in/sign-up uses
@supabase/auth-ui-reactcomponents - After authentication, check
VITE_HOME_URLenvironment variable - If
VITE_HOME_URLis set and external (http/https), redirect viawindow.location.href - If internal path, use TanStack Router navigation
- If not set, user stays on home page (
/) - Session persists via Supabase client
- React 19 with TypeScript
- Vite - Dev server (port 3000) and build tool
- Supabase - Backend and authentication (@supabase/auth-ui-react for UI)
- TanStack Router - Type-safe routing
- Tailwind CSS v4 - Styling with CSS variables