Documentation Index
Fetch the complete documentation index at: https://mintlify.com/scr83/reportr/llms.txt
Use this file to discover all available pages before exploring further.
Database Deployment
Reportr uses PostgreSQL with Prisma ORM for data persistence. This guide covers production database setup, migrations, and best practices.Database Requirements
PostgreSQL Version
- Minimum: PostgreSQL 12
- Recommended: PostgreSQL 14 or higher
- Compatibility: Tested with PostgreSQL 12-16
Connection Pooling
Required for serverless environments (Vercel, AWS Lambda):- PgBouncer - Connection pooler for PostgreSQL
- Supabase Pooler - Built-in connection pooling
- Neon - Automatic connection pooling
Database Providers
Choose a PostgreSQL provider based on your needs:Vercel Postgres
Pros: Deep Vercel integration, automatic pooling, simple setupCons: More expensive, limited to Vercel ecosystemPricing: 0.02/GB transferredBest for: Vercel-first deployments
Neon
Pros: Serverless, autoscaling, generous free tier, branchingCons: Newer platform, limited regionsPricing: Free tier (0.5GB), $20/month for proBest for: Development and small-medium production
Supabase
Pros: Free tier (500MB), real-time features, backupsCons: Requires manual pooling configurationPricing: Free tier available, $25/month for proBest for: Projects needing real-time features
Railway
Pros: Simple setup, automatic backups, fair pricingCons: Less specialized for serverlessPricing: $5/month base + usageBest for: Developers wanting simplicity
Database Schema
Core Models
Reportr’s Prisma schema includes:Key Features
- User white-labeling:
companyName,primaryColor,logo - Google API tokens: Encrypted storage for OAuth tokens
- Report data: JSON fields for flexible data storage
- AI insights: Structured AI-generated insights with metadata
- Subscription management: PayPal integration for billing
Setup Instructions
1. Create Database
- Vercel Postgres
- Neon
- Supabase
- Railway
POSTGRES_URL and other connection variables.2. Configure Environment Variables
Set in your deployment platform (Vercel, etc.):Use
DATABASE_URL for migrations and PRISMA_DATABASE_URL for runtime queries.3. Run Migrations
Verify database
4. Seed Initial Data (Optional)
- Sample app settings
- Default email templates
- Test user (in development)
Prisma Configuration
Connection Datasource
Inprisma/schema.prisma:
Client Configuration
Using Prisma Client
In your application code:Database Migrations
Creating Migrations
Migration Strategy
Development
Development
Use
prisma migrate dev to:- Create migration files
- Apply to development database
- Regenerate Prisma Client
Staging
Staging
Use
prisma migrate deploy to:- Apply pending migrations
- Skip migration generation
- Safe for CI/CD pipelines
Production
Production
Use
prisma migrate deploy with:- Automatic backups before migration
- Rollback plan prepared
- Monitor for issues post-migration
Rollback Strategy
Prisma doesn’t have built-in rollback. Options:- Database snapshots: Take snapshot before migration
- Manual rollback: Write down migration SQL to revert
- Restore from backup: Use provider’s backup system
Performance Optimization
Indexes
Key indexes defined in schema:Connection Pooling
Configure PgBouncer for optimal performance:pgbouncer=true: Enable PgBouncer modeconnection_limit=1: Limit connections per serverless functionpool_timeout=10: Timeout for acquiring connection (seconds)
Query Optimization
- Use select to limit fields
- Use include carefully
- Paginate large queries
Backup Strategy
Automated Backups
- Vercel Postgres
- Neon
- Supabase
- Railway
- Automatic: Daily backups (retained 7 days)
- Point-in-time recovery: Available on Pro plan
- Configuration: No setup required
Manual Backup
Monitoring & Maintenance
Database Monitoring
Monitor these metrics:- Connection count: Should stay below max connections
- Query performance: Slow queries > 1 second
- Database size: Monitor growth for cost planning
- Error rate: Connection errors, timeouts
Prisma Logging
Enable query logging in development:Database Maintenance
Regular tasks:- Vacuum: Reclaim storage (automatic in most providers)
- Analyze: Update query planner statistics
- Reindex: Rebuild indexes if performance degrades
Security Best Practices
Troubleshooting
Connection pool exhausted
Connection pool exhausted
Error:
Can't reach database serverSolution:- Enable connection pooling with PgBouncer
- Set
connection_limit=1in connection string - Reduce concurrent function executions
Prisma Client not found
Prisma Client not found
Error:
@prisma/client did not initialize yetSolution:Migration conflicts
Migration conflicts
Error:
Migration failed to applySolution:Slow queries
Slow queries
Issue: Queries taking > 1 secondSolution:
- Add indexes for frequently queried fields
- Use
selectto limit returned fields - Implement pagination for large datasets
- Use database query analyzer
Cost Estimation
Monthly Database Costs
- Small (< 100 users)
- Medium (100-1000 users)
- Large (1000+ users)
- Neon: Free tier (0.5GB)
- Supabase: Free tier (500MB)
- Railway: ~$5-10/month
- Vercel Postgres: ~$10-20/month
Next Steps
Environment Variables
Configure all required environment variables
Vercel Deployment
Deploy your application to Vercel