-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Description
Establish a proper Supabase environment setup with local development, staging, and production environments to enable safe migration testing and deployment workflows.
Current State
supabase/config.tomlexists and is configured for local development- 19 migration files exist in
supabase/migrations/ - Supabase CLI is in
devDependencies(supabase@^2.58.5) - README mentions Supabase but lacks detailed local setup instructions
- No documented staging environment
- Production environment exists but migration workflow is manual
Requirements
1. Local Development Environment
Setup:
- Document how to start local Supabase instance
- Document how to run migrations locally
- Document how to reset local database
- Document how to access Supabase Studio locally
- Create
.env.local.exampletemplate file - Update README with local Supabase setup instructions
Commands to document:
# Start local Supabase
supabase start
# Run migrations locally
supabase db reset
# Stop local Supabase
supabase stop
# Access Supabase Studio
# Should be available at http://127.0.0.1:54323 (per config.toml)Environment Variables:
- Document required
.env.localvariables for local development - Ensure local Supabase URLs/keys are clearly documented
- Add instructions for linking to local instance vs remote
2. Staging Environment
Setup:
- Create a separate Supabase project for staging
- Configure staging project with appropriate settings
- Document how to link local CLI to staging project
- Set up GitHub Actions workflow or script to deploy to staging
- Configure staging environment variables in GitHub secrets
Configuration:
- Staging should mirror production structure
- Use staging for testing migrations before production
- Consider automated deployment to staging on PR creation/updates
GitHub Secrets needed:
STAGING_SUPABASE_PROJECT_IDSTAGING_SUPABASE_ACCESS_TOKENSTAGING_SUPABASE_DB_PASSWORD(if needed)
3. Production Environment
Setup:
- Document production Supabase project details
- Ensure production credentials are in GitHub secrets
- Document migration deployment process
- Set up proper access controls and permissions
GitHub Secrets needed:
SUPABASE_PROJECT_ID(production)SUPABASE_ACCESS_TOKEN(production)SUPABASE_DB_PASSWORD(production, if needed)
4. Environment Management
Documentation:
- Create
docs/supabase-setup.mdwith comprehensive setup guide - Document how to switch between environments
- Document migration workflow: local → staging → production
- Add troubleshooting section
Scripts/Tooling:
- Consider adding npm/bun scripts for common Supabase operations:
"supabase:start": "supabase start", "supabase:stop": "supabase stop", "supabase:reset": "supabase db reset", "supabase:migrate:local": "supabase db push", "supabase:migrate:staging": "supabase db push --project-ref <staging-ref>", "supabase:migrate:prod": "supabase db push --project-ref <prod-ref>"
Implementation Considerations
-
Local Development:
- Ensure Docker is installed (required for
supabase start) - Document port conflicts and how to resolve them
- Document how to seed local database with test data
- Consider adding a seed script for local development
- Ensure Docker is installed (required for
-
Staging Environment:
- Should be created as a separate Supabase project
- Consider using Supabase's free tier for staging
- Set up automated testing of migrations in staging
- Document how to sync staging data from production (if needed)
-
Production Environment:
- Ensure proper backup strategy is documented
- Document rollback procedures for failed migrations
- Set up monitoring/alerting for migration failures
- Consider using Supabase's migration history tracking
-
Security:
- All production credentials must be in GitHub secrets
- Never commit
.env.localfiles - Document least-privilege access principles
- Consider using Supabase's project linking feature
-
CI/CD Integration:
- Staging migrations could run on PR creation
- Production migrations should run only on merge to
master - Consider adding migration validation step before deployment
- Add migration status checks to PR checks
File Structure
After implementation, the project should have:
docs/
supabase-setup.md # Comprehensive setup guide
.env.local.example # Template for local environment variables
supabase/
config.toml # Already exists (local config)
migrations/ # Already exists
seed.sql # Seed file (if needed)
Acceptance Criteria
- Local Supabase setup is fully documented and working
- Staging Supabase project is created and configured
- Production Supabase credentials are securely stored in GitHub secrets
- README updated with local development setup instructions
-
docs/supabase-setup.mdcreated with comprehensive guide -
.env.local.exampletemplate file created - Migration workflow documented: local → staging → production
- All team members can successfully set up local environment
- Staging environment can be used to test migrations before production
Related Issues
- Include supabase db migration in the deploy workflow #57 - Include Supabase database migrations in the deploy workflow (depends on this issue)
Notes
- Supabase CLI requires Docker to be running for local development
- Local Supabase Studio is available at
http://127.0.0.1:54323(persupabase/config.toml) - Consider using Supabase's
supabase linkcommand to connect to remote projects - Migration files should be tested locally before pushing to staging/production
- Consider adding a pre-commit hook to validate migration SQL syntax
Resources
This issue covers:
- Local, staging, and production setup
- Documentation requirements
- Security considerations
- CI/CD integration points
- Acceptance criteria
- Related issues
Copy this into a new GitHub issue.