4.3 KiB
4.3 KiB
Database Configuration Reference
Current Setup
Database Type
- Provider: Supabase (PostgreSQL)
- ORM: Prisma
- Connection: Via
DATABASE_URLenvironment variable pointing to Supabase
Schema Location
- Prisma Schema:
prisma/schema.prisma - Migrations:
prisma/migrations/ - Seed Script:
prisma/seed.ts
Database Models
Core Models
-
Guest - Guest information and RSVP
- Fields: name, inviteCode, email, phone, maxPax, isAttending, etc.
- Relations: Song, GuestbookEntry, GalleryPhoto, Tribute, Table
-
Song - Song requests from guests
- Fields: title, artist, votes, previewUrl, trackUrl
- Relations: Guest, SongVote
-
GuestbookEntry - Guestbook messages
- Fields: message, photo, audioUrl, videoUrl
- Relations: Guest
-
GalleryPhoto - Photo gallery uploads
- Fields: url, thumbnailUrl, caption, likes
- Relations: Guest, PhotoComment
-
Table - Seating arrangements
- Fields: name, capacity
- Relations: Guest
-
Admin - Admin users
- Fields: username, password, email, totpSecret, totpEnabled
-
Tribute - Tributes/dedications
- Fields: guestName, dedication
- Relations: Guest (optional)
-
Reminder - Email/SMS reminders
- Fields: name, type, trigger, targetAudience, enabled
-
ABTest - A/B testing
- Fields: name, type, status, variantA, variantB, splitRatio
-
CouplesPlaylist - Couple's playlist
- Fields: title, artist, trackUrl, previewUrl, order, revealAt
Environment Variables
Required
# Supabase PostgreSQL connection string
# Get from Supabase Dashboard → Settings → Database → Connection String
# Use "Connection Pooling" mode for RUNTIME_DATABASE_URL
DATABASE_URL=postgresql://postgres:[PASSWORD]@[HOST]:5432/postgres
RUNTIME_DATABASE_URL=postgresql://postgres:[PASSWORD]@[HOST]:6543/postgres?pgbouncer=true # Connection pooling
Optional
SHADOW_DATABASE_URL=postgresql://postgres:[PASSWORD]@[HOST]:5432/postgres # For migrations (direct connection)
Migration Commands
# Generate Prisma client
npx prisma generate
# Create migration
npx prisma migrate dev --name migration_name
# Deploy migrations (production)
npx prisma migrate deploy
# Push schema changes (development)
npx prisma db push
# Seed database
npm run db:seed
# Open Prisma Studio
npm run db:studio
Backup & Restore
See COOLIFY_DATABASE_MIGRATION.md for detailed instructions.
Quick Backup
./scripts/backup-database.sh
Quick Restore
./scripts/restore-database.sh backups/latest
Supabase Configuration
Getting Connection Strings
- Go to Supabase Dashboard
- Select your project
- Go to Settings → Database
- Copy connection strings:
- Direct connection (for migrations): Use port
5432 - Connection pooling (for runtime): Use port
6543with?pgbouncer=true
- Direct connection (for migrations): Use port
App Environment Variables
# Direct connection (for migrations)
DATABASE_URL=postgresql://postgres:[PASSWORD]@db.[PROJECT_REF].supabase.co:5432/postgres
# Connection pooling (for runtime - recommended)
RUNTIME_DATABASE_URL=postgresql://postgres:[PASSWORD]@db.[PROJECT_REF].supabase.co:6543/postgres?pgbouncer=true
# Optional: Shadow database for migrations (if using separate database)
SHADOW_DATABASE_URL=postgresql://postgres:[PASSWORD]@db.[PROJECT_REF].supabase.co:5432/postgres
Important:
- Replace
[PASSWORD]with your Supabase database password - Replace
[PROJECT_REF]with your Supabase project reference ID - Use connection pooling (
RUNTIME_DATABASE_URL) for production to avoid connection limits
Seed Data
Seed data comes from:
data/guests.csv- Guest listprisma/seed.ts- Seed script
Seed includes:
- Guests from CSV
- Admin user (username:
admin) - Sample tables (Table 1-5)
Connection Pooling
For production, use RUNTIME_DATABASE_URL with a connection pooler (e.g., PgBouncer):
- Direct connection: Port
5432 - Pooled connection: Port
6543(or configured port)
Security Notes
- Use strong database passwords
- Restrict database access to application only
- Use connection pooling in production
- Enable SSL for production connections
- Never commit
.envfiles with real credentials