188 lines
5.5 KiB
Markdown
188 lines
5.5 KiB
Markdown
# 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.
|
|
|