Initial commit: MOPC platform with Docker deployment setup

Full Next.js 15 platform with tRPC, Prisma, PostgreSQL, NextAuth.
Includes production Dockerfile (multi-stage, port 7600), docker-compose
with registry-based image pull, Gitea Actions CI workflow, nginx config
for portal.monaco-opc.com, deployment scripts, and DEPLOYMENT.md guide.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-30 13:41:32 +01:00
commit a606292aaa
290 changed files with 70691 additions and 0 deletions

70
.env.example Normal file
View File

@@ -0,0 +1,70 @@
# =============================================================================
# MOPC Platform Environment Variables
# =============================================================================
# Copy this file to .env.local for local development
# Copy to .env for production
# =============================================================================
# DATABASE
# =============================================================================
DATABASE_URL="postgresql://mopc:password@localhost:5432/mopc"
# Docker Compose database credentials
POSTGRES_USER="mopc"
POSTGRES_PASSWORD="devpassword"
POSTGRES_DB="mopc"
# =============================================================================
# AUTHENTICATION (NextAuth.js)
# =============================================================================
# Production URL (no trailing slash)
NEXTAUTH_URL="https://monaco-opc.com"
# Generate with: openssl rand -base64 32
NEXTAUTH_SECRET="your-secret-key-here"
# =============================================================================
# FILE STORAGE (MinIO)
# =============================================================================
# Internal endpoint for server-to-server communication
MINIO_ENDPOINT="http://localhost:9000"
# Public endpoint for browser-accessible URLs (pre-signed URLs)
# Set this when MinIO is behind a reverse proxy or external to Docker network
# If not set, falls back to MINIO_ENDPOINT
# MINIO_PUBLIC_ENDPOINT="https://storage.monaco-opc.com"
MINIO_ACCESS_KEY="minioadmin"
MINIO_SECRET_KEY="minioadmin"
MINIO_BUCKET="mopc-files"
# =============================================================================
# EMAIL (SMTP via Poste.io)
# =============================================================================
SMTP_HOST="localhost"
SMTP_PORT="587"
SMTP_USER="noreply@monaco-opc.com"
SMTP_PASS="your-smtp-password"
EMAIL_FROM="MOPC Platform <noreply@monaco-opc.com>"
# =============================================================================
# AI (OpenAI for Smart Assignment)
# =============================================================================
# Optional: Enable AI-powered jury assignment suggestions
OPENAI_API_KEY=""
OPENAI_MODEL="gpt-4o"
# =============================================================================
# APPLICATION SETTINGS
# =============================================================================
# Node environment
NODE_ENV="development"
# Maximum file upload size in bytes (500MB for videos)
MAX_FILE_SIZE="524288000"
# Session duration in seconds (24 hours)
SESSION_MAX_AGE="86400"
# Magic link expiry in seconds (15 minutes)
MAGIC_LINK_EXPIRY="900"