# Local Supabase Setup Guide This guide will help you set up and run Supabase locally for development. ## Prerequisites 1. **Docker Desktop** - Supabase runs on Docker - Download: https://docs.docker.com/desktop - Make sure Docker Desktop is running before proceeding 2. **Supabase CLI** - Already installed via Homebrew ## Quick Start ### 1. Start Local Supabase ```bash cd old ./scripts/setup-local-supabase.sh ``` This script will: - Check if Docker is running - Initialize Supabase (if not already done) - Start all Supabase services locally - Apply all database migrations - Display your local credentials ### 2. Run Flutter App with Local Supabase ```bash ./scripts/run-flutter-local.sh ``` Or specify a device: ```bash ./scripts/run-flutter-local.sh chrome ./scripts/run-flutter-local.sh web-server ``` ### 3. Get Credentials Manually If you need to see the credentials again: ```bash ./scripts/get-local-credentials.sh ``` Or use the Supabase CLI directly: ```bash supabase status ``` ## Manual Setup If you prefer to set up manually: ### Step 1: Start Supabase ```bash cd old supabase start ``` ### Step 2: Get Credentials After starting, `supabase status` will show: - **API URL**: Your local Supabase URL (usually `http://127.0.0.1:54321`) - **anon key**: Your local anon key ### Step 3: Run Flutter with Credentials ```bash flutter run -d chrome \ --dart-define=SUPABASE_URL="http://127.0.0.1:54321" \ --dart-define=SUPABASE_ANON_KEY="" ``` ## Useful Commands ### Supabase Management ```bash # Start Supabase supabase start # Stop Supabase supabase stop # View Supabase status and credentials supabase status # View logs supabase logs # Reset database (applies all migrations fresh) supabase db reset # Apply new migrations supabase db reset ``` ### Database Migrations Migrations are automatically applied when you run `supabase start` or `supabase db reset`. To create a new migration: ```bash supabase migration new ``` ## Local Supabase Services When running locally, Supabase provides: - **API**: `http://127.0.0.1:54321` - **Studio (Admin UI)**: `http://127.0.0.1:54323` - **Database**: `postgresql://postgres:postgres@127.0.0.1:54322/postgres` - **Auth**: Handled by the API - **Storage**: Handled by the API ## Accessing Supabase Studio Supabase Studio is a web-based admin interface for managing your local database: 1. Start Supabase: `supabase start` 2. Open Studio URL from `supabase status` output (usually `http://127.0.0.1:54323`) 3. Use it to: - View and edit tables - Run SQL queries - Manage authentication - View API documentation ## Troubleshooting ### Docker Not Running ``` Error: Cannot connect to the Docker daemon ``` **Solution**: Start Docker Desktop and wait for it to fully start, then try again. ### Port Already in Use If ports 54321, 54322, or 54323 are already in use: 1. Stop the conflicting service 2. Or modify `supabase/config.toml` to use different ports ### Database Reset Issues If migrations fail: ```bash # Stop Supabase supabase stop # Reset everything supabase db reset # Start again supabase start ``` ### Flutter Can't Connect Make sure: 1. Supabase is running (`supabase status`) 2. You're using the correct URL and anon key 3. The `--dart-define` flags are correctly formatted ## Switching Between Local and Production ### Use Local Supabase ```bash ./scripts/run-flutter-local.sh ``` ### Use Production Supabase Update `env.json` with production credentials and run: ```bash flutter run -d chrome \ --dart-define-from-file=env.json ``` Note: The current app uses `String.fromEnvironment`, so you need `--dart-define` flags. ## Next Steps 1. ✅ Start Docker Desktop 2. ✅ Run `./scripts/setup-local-supabase.sh` 3. ✅ Run `./scripts/run-flutter-local.sh` 4. ✅ Open Supabase Studio to view your database 5. ✅ Start developing!