Files
spotlightcam/docker-compose.yml
Radosław Gierwiało 0e62b12f5e feat: add PostgreSQL database with Prisma ORM
Phase 1 - Step 2: PostgreSQL Setup

**Infrastructure:**
- Add PostgreSQL 15 Alpine container to docker-compose.yml
- Configure persistent volume for database data
- Update backend Dockerfile with OpenSSL for Prisma compatibility

**Database Schema (Prisma):**
- 6 tables: users, events, chat_rooms, messages, matches, ratings
- Foreign key relationships and cascading deletes
- Performance indexes on frequently queried columns
- Unique constraints for data integrity

**Prisma Setup:**
- Prisma Client for database queries
- Migration system with initial migration
- Seed script with 4 test events and chat rooms
- Database connection utility with singleton pattern

**API Implementation:**
- GET /api/events - List all events (with filtering and sorting)
- GET /api/events/:id - Get single event with relations
- Database connection test on server startup
- Graceful database disconnect on shutdown

**Seed Data:**
- Warsaw Dance Festival 2025
- Swing Camp Barcelona 2025
- Blues Week Herräng 2025
- Krakow Swing Connection 2025

**Testing:**
- Database connection verified 
- API endpoints returning data from PostgreSQL 
- Migrations applied successfully 

All systems operational 🚀
2025-11-12 21:56:11 +01:00

66 lines
1.4 KiB
YAML

services:
nginx:
image: nginx:alpine
container_name: spotlightcam-nginx
ports:
- "8080:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/conf.d:/etc/nginx/conf.d:ro
depends_on:
- frontend
- backend
restart: unless-stopped
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: spotlightcam-frontend
expose:
- "5173"
volumes:
- ./frontend:/app
- /app/node_modules
environment:
- NODE_ENV=development
- VITE_HOST=0.0.0.0
stdin_open: true
tty: true
command: npm run dev
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: spotlightcam-backend
expose:
- "3000"
volumes:
- ./backend:/app
- /app/node_modules
environment:
- NODE_ENV=development
- PORT=3000
- CORS_ORIGIN=http://localhost:8080
- DATABASE_URL=postgresql://spotlightcam:spotlightcam123@db:5432/spotlightcam
depends_on:
- db
restart: unless-stopped
db:
image: postgres:15-alpine
container_name: spotlightcam-db
environment:
- POSTGRES_USER=spotlightcam
- POSTGRES_PASSWORD=spotlightcam123
- POSTGRES_DB=spotlightcam
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: unless-stopped
volumes:
postgres_data: