# Changelog - PostgreSQL Migration ## [2.0.0] - 2024-10-13 ### 🎉 Major Changes - Supabase to PostgreSQL Migration #### Removed - ❌ **Supabase dependency** - Removed all Supabase-specific configurations - ❌ **DIRECT_URL** - Removed connection pooling URL (Supabase-specific) - ❌ **External database dependency** - Now fully self-hosted #### Added - ✅ **PostgreSQL 16 in Docker** - Local PostgreSQL database with Docker support - ✅ **Redis 7** - Caching and rate limiting with Redis - ✅ **Adminer** - Database management UI (http://localhost:8080) - ✅ **Docker Compose setups** - Both development and production configurations - ✅ **Database initialization** - Automated database setup with extensions - ✅ **Complete documentation** - Multiple guides for setup and migration - ✅ **Setup scripts** - Automated setup for both Linux/Mac and Windows - ✅ **npm scripts** - Convenient Docker commands via npm #### Modified Files - 📝 `prisma/schema.prisma` - Removed directUrl field - 📝 `src/lib/env.ts` - Removed DIRECT_URL, updated DATABASE_URL default - 📝 `docker-compose.yml` - Complete rewrite with PostgreSQL, Redis, and networking - 📝 `Dockerfile` - Enhanced with proper PostgreSQL support - 📝 `package.json` - Added Docker scripts and tsx dependency - 📝 `README.md` - Updated with new setup instructions #### New Files - 📄 `docker-compose.dev.yml` - Development environment (database only) - 📄 `docker/init-db.sh` - PostgreSQL initialization script - 📄 `docker/README.md` - Docker-specific documentation - 📄 `DOCKER_SETUP.md` - Comprehensive Docker setup guide - 📄 `MIGRATION_FROM_SUPABASE.md` - Step-by-step migration guide - 📄 `env.example` - Environment variable template - 📄 `.dockerignore` - Docker build optimization - 📄 `scripts/setup.sh` - Quick setup script (Linux/Mac) - 📄 `scripts/setup.ps1` - Quick setup script (Windows) - 📄 `CHANGELOG.md` - This file ### 📦 Docker Services #### PostgreSQL Database - **Image**: postgres:16-alpine - **Port**: 5432 - **Features**: - Health checks - Volume persistence - UTF-8 encoding - Extensions: uuid-ossp, pg_trgm #### Redis Cache - **Image**: redis:7-alpine - **Port**: 6379 - **Features**: - AOF persistence - 256MB max memory with LRU eviction - Health checks #### Next.js Application - **Port**: 3000 - **Features**: - Multi-stage build - Production optimization - Health checks - Automatic Prisma generation #### Adminer (Development) - **Port**: 8080 - **Features**: - Database management UI - Optional (dev profile) - Pre-configured for PostgreSQL ### 🚀 Quick Start #### Development Mode ```bash npm run docker:dev # Start database npm run db:migrate # Run migrations npm run dev # Start app ``` #### Production Mode ```bash npm run docker:prod # Start all services ``` ### 📚 Documentation - **README.md** - Main documentation with quick start - **DOCKER_SETUP.md** - Complete Docker guide with troubleshooting - **MIGRATION_FROM_SUPABASE.md** - Migration guide from Supabase - **docker/README.md** - Docker commands and operations - **env.example** - Environment variable reference ### 🔧 New npm Scripts ```bash # Docker commands npm run docker:dev # Start development services npm run docker:dev:stop # Stop development services npm run docker:prod # Start production stack npm run docker:stop # Stop all services npm run docker:logs # View all logs npm run docker:db # PostgreSQL CLI npm run docker:redis # Redis CLI npm run docker:backup # Backup database ``` ### 🔐 Environment Variables #### Required - `DATABASE_URL` - PostgreSQL connection string - `NEXTAUTH_SECRET` - NextAuth.js secret (generate with openssl) - `NEXTAUTH_URL` - Application URL - `IP_SALT` - Salt for IP hashing (generate with openssl) #### Optional - `GOOGLE_CLIENT_ID` - Google OAuth client ID - `GOOGLE_CLIENT_SECRET` - Google OAuth secret - `REDIS_URL` - Redis connection string - `ENABLE_DEMO` - Enable demo mode ### 🎯 Benefits 1. **Full Control** - Own your data and infrastructure 2. **No Vendor Lock-in** - Standard PostgreSQL 3. **Lower Latency** - Local network speed 4. **Cost Effective** - No monthly database fees 5. **Privacy** - Data stays on your infrastructure 6. **Development** - Easy local testing 7. **Offline Capable** - Works without internet ### 🔄 Migration Path 1. Backup Supabase data 2. Update codebase 3. Start local PostgreSQL 4. Restore data or run migrations 5. Update environment variables 6. Deploy See [MIGRATION_FROM_SUPABASE.md](MIGRATION_FROM_SUPABASE.md) for detailed steps. ### ⚠️ Breaking Changes - `DIRECT_URL` environment variable removed - Database now requires Docker or local PostgreSQL - Supabase-specific features removed ### 📊 Performance Improvements - Local database reduces latency - Redis caching improves response times - Connection pooling via Prisma - Optimized Docker images ### 🐛 Bug Fixes - Fixed database connection handling - Improved error messages - Better health checks ### 🔜 Future Enhancements - [ ] PostgreSQL replication for HA - [ ] Redis Sentinel for failover - [ ] Automated backup scripts - [ ] Monitoring and alerting - [ ] Database performance tuning - [ ] Multi-region deployment ### 📝 Notes - Default PostgreSQL password should be changed in production - Always backup data before migration - Review security settings before deployment - Set up automated backups in production --- **Migration completed successfully!** 🎉 For support, see documentation or open an issue on GitHub.