qrmaster/SETUP_COMPLETE.md

7.6 KiB

Setup Complete - PostgreSQL Migration

🎉 What Was Done

Your QR Master application has been successfully migrated from Supabase to a local PostgreSQL database with Docker!

Completed Tasks

  1. Removed Supabase Dependencies

    • Removed DIRECT_URL from Prisma schema
    • Removed DIRECT_URL from environment validation
    • Cleaned up all Supabase-specific configurations
  2. Created Docker Infrastructure

    • Production Docker Compose (docker-compose.yml)
    • Development Docker Compose (docker-compose.dev.yml)
    • Optimized Dockerfile for Next.js
    • PostgreSQL 16 Alpine with persistence
    • Redis 7 Alpine with AOF persistence
    • Adminer database UI (optional)
    • Custom bridge network for services
  3. Database Setup

    • PostgreSQL initialization script
    • UUID and pg_trgm extensions
    • Health checks for all services
    • Volume persistence
  4. Documentation

    • Updated README.md
    • Created DOCKER_SETUP.md (comprehensive guide)
    • Created MIGRATION_FROM_SUPABASE.md
    • Created docker/README.md
    • Created CHANGELOG.md
    • Created env.example template
  5. Developer Tools

    • Setup script for Linux/Mac (scripts/setup.sh)
    • Setup script for Windows (scripts/setup.ps1)
    • npm Docker scripts
    • .dockerignore for optimization
  6. Environment Configuration

    • Created env.example template
    • Updated environment validation
    • Simplified configuration

🚀 How to Get Started

Windows:

cd scripts
.\setup.ps1

Linux/Mac:

chmod +x scripts/setup.sh
./scripts/setup.sh

Option 2: Manual Setup

Development Mode (Database in Docker, App on Host)

# 1. Copy environment file
cp env.example .env

# 2. Edit .env and set NEXTAUTH_SECRET and IP_SALT
# Generate with: openssl rand -base64 32

# 3. Install dependencies
npm install

# 4. Start database services
npm run docker:dev

# 5. Run migrations
npm run db:migrate

# 6. Seed database
npm run db:seed

# 7. Start development server
npm run dev

Production Mode (Full Stack in Docker)

# 1. Copy and configure environment
cp env.example .env
# Edit .env with your settings

# 2. Build and start
npm run docker:prod

# 3. Run migrations
docker-compose exec web npx prisma migrate deploy

# 4. Access at http://localhost:3050

📍 Access Points

After setup, you can access:

  • 🌐 Application: http://localhost:3050
  • 🗄️ Database UI (Adminer): http://localhost:8080
    • System: PostgreSQL
    • Server: db
    • Username: postgres
    • Password: postgres
    • Database: qrmaster
  • 💾 PostgreSQL: localhost:5432
  • 🔴 Redis: localhost:6379

📦 What's Included

Docker Services

Service Image Port Purpose
web Next.js (custom) 3050 Application
db postgres:16-alpine 5432 Database
redis redis:7-alpine 6379 Cache
adminer adminer:latest 8080 DB UI

File Structure

QRMASTER/
├── docker/
│   ├── init-db.sh              # PostgreSQL initialization
│   └── README.md               # Docker commands
├── scripts/
│   ├── setup.sh                # Quick setup (Linux/Mac)
│   └── setup.ps1               # Quick setup (Windows)
├── src/                        # Application code
├── prisma/
│   └── schema.prisma           # Updated schema (no directUrl)
├── docker-compose.yml          # Production setup
├── docker-compose.dev.yml      # Development setup
├── Dockerfile                  # Application container
├── env.example                 # Environment template
├── .dockerignore              # Docker build optimization
├── DOCKER_SETUP.md            # Complete Docker guide
├── MIGRATION_FROM_SUPABASE.md # Migration guide
├── CHANGELOG.md               # What changed
└── README.md                  # Updated main docs

🛠️ Useful Commands

Development

npm run dev              # Start dev server
npm run docker:dev       # Start database only
npm run docker:dev:stop  # Stop database

Database

npm run db:migrate       # Run migrations
npm run db:seed          # Seed database
npm run db:studio        # Open Prisma Studio
npm run docker:db        # PostgreSQL CLI

Docker

npm run docker:prod      # Start all services
npm run docker:stop      # Stop all services
npm run docker:logs      # View logs
npm run docker:backup    # Backup database

Management

docker-compose ps                    # Check status
docker-compose logs -f               # Follow logs
docker-compose restart web           # Restart app
docker-compose exec db psql -U postgres -d qrmaster  # DB CLI

📚 Documentation

🔐 Security Checklist

Before deploying to production:

  • Change PostgreSQL password in docker-compose.yml
  • Set strong NEXTAUTH_SECRET (generate with openssl rand -base64 32)
  • Set strong IP_SALT (generate with openssl rand -base64 32)
  • Update NEXTAUTH_URL to your domain
  • Enable HTTPS/SSL
  • Set up firewall rules
  • Configure automated backups
  • Review and test all environment variables

🎯 Next Steps

  1. Test the Application

    npm run docker:dev
    npm run dev
    # Visit http://localhost:3050
    
  2. Review Configuration

    • Check .env file
    • Verify database connection
    • Test authentication
  3. Set Up Backups

    # Manual backup
    npm run docker:backup
    
    # Or create automated backup script
    # See DOCKER_SETUP.md for examples
    
  4. Customize

    • Update database passwords
    • Configure OAuth providers
    • Adjust resource limits
    • Set up monitoring

🆘 Need Help?

Common Issues

Database won't start:

docker-compose logs db
docker-compose restart db

Port already in use:

# Windows
netstat -ano | findstr :3050

# Change port in docker-compose.yml if needed

Prisma errors:

npm run db:generate
npm run db:migrate

Resources

  • DOCKER_SETUP.md - Comprehensive troubleshooting
  • docker/README.md - Common Docker commands
  • MIGRATION_FROM_SUPABASE.md - Migration help

Support

  1. Check the documentation files
  2. Review logs: docker-compose logs -f
  3. Check service health: docker-compose ps
  4. Open an issue on GitHub

Features

Your application now has:

  • Self-hosted PostgreSQL - Full control over your data
  • Redis caching - Improved performance
  • Docker Compose - Easy deployment
  • Health checks - Automatic monitoring
  • Data persistence - Volumes for data safety
  • Database UI - Adminer for easy management
  • Development mode - Run only what you need
  • Production ready - Optimized Docker builds
  • Complete docs - Multiple guides and references

🎊 Success!

You're now ready to develop and deploy QR Master with your own PostgreSQL database!

Demo Credentials:


Happy coding! 🚀

Need more help? Check the documentation or run the setup scripts.