Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Ishaq74/concordia/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Concordia uses PostgreSQL with Drizzle ORM for database management. This guide covers setting up your production database, running migrations, and managing data.Database Configuration
Concordia uses separate Drizzle configurations for development and production environments.Production Configuration
The production database is configured indrizzle-prod.config.ts:
drizzle-prod.config.ts
Development Configuration
For comparison, the development config usesDATABASE_URL_LOCAL:
drizzle-dev.config.ts
Environment Variables
Add these variables to your production.env file:
.env
PostgreSQL Setup
Concordia works with any PostgreSQL provider. Popular options include:- Neon - Serverless PostgreSQL with branching
- Supabase - PostgreSQL with built-in auth and storage
- Railway - Simple PostgreSQL deployments
- AWS RDS - Managed PostgreSQL service
- Self-hosted - Traditional PostgreSQL instance
Connection String Format
Your production connection string should include SSL:Running Migrations
Generate Migrations
Create migration files from your schema changes:Generate migration
Run the generate command:This creates SQL migration files in
src/database/migrations/.Apply Migrations
Run migrations against your production database:Migration Features
The migration script (scripts/db/db.migrate.ts) includes:
- Safety confirmations for production databases
- Automatic rollback on errors
- Idempotent execution - safe to run multiple times
- Migration tracking via
__drizzle_migrationstable - Reset option -
--resetflag drops all tables (requires confirmation)
Reset Database (Destructive)
To drop all tables and start fresh:Database Seeding
Populate your database with initial data:Seed Data Location
Seed data files are stored insrc/database/data/ with the naming convention:
Seed Features
- Auto-matching: Automatically matches data files to schema tables
- Conflict handling: Uses
onConflictDoNothing()for safe re-runs - Production safety: Requires
CONFIRM_PROD=ouifor production - Reset option:
--resetflag truncates all tables first
Seed with Reset
Database Synchronization
Sync data between development and production databases:How Sync Works
The sync script (scripts/db/db.sync.ts):
- Connects to both databases
- Gets list of all tables
- For each table:
- Reads all rows from source
- Truncates destination table
- Inserts all rows with proper column mapping
- Maintains referential integrity with CASCADE
Backup and Maintenance
Manual Backup
Usepg_dump for backups:
Restore from Backup
Database Comparison
Compare schemas between environments:Connection Check
Verify database connectivity:Production Checklist
Troubleshooting
Migration Errors
If migrations fail:- Check
__drizzle_migrationstable - see which migrations applied - Review SQL syntax - some PostgreSQL features vary by version
- Check permissions - ensure user has CREATE/ALTER rights
- Manual rollback - migrations use transactions, so failures rollback automatically
Connection Issues
Schema Drift
If production schema differs from expected:Next Steps
SMTP Configuration
Configure email delivery for authentication and notifications
Hosting
Deploy your application to production