5.5 KiB
5.5 KiB
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
npm run docker:dev # Start database
npm run db:migrate # Run migrations
npm run dev # Start app
Production Mode
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
# 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 stringNEXTAUTH_SECRET- NextAuth.js secret (generate with openssl)NEXTAUTH_URL- Application URLIP_SALT- Salt for IP hashing (generate with openssl)
Optional
GOOGLE_CLIENT_ID- Google OAuth client IDGOOGLE_CLIENT_SECRET- Google OAuth secretREDIS_URL- Redis connection stringENABLE_DEMO- Enable demo mode
🎯 Benefits
- Full Control - Own your data and infrastructure
- No Vendor Lock-in - Standard PostgreSQL
- Lower Latency - Local network speed
- Cost Effective - No monthly database fees
- Privacy - Data stays on your infrastructure
- Development - Easy local testing
- Offline Capable - Works without internet
🔄 Migration Path
- Backup Supabase data
- Update codebase
- Start local PostgreSQL
- Restore data or run migrations
- Update environment variables
- Deploy
See MIGRATION_FROM_SUPABASE.md for detailed steps.
⚠️ Breaking Changes
DIRECT_URLenvironment 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.