- Photos: guests and hosts can download all event photos as a ZIP; HEIC/HEIF uploads are now accepted, with a WebP thumbnail generated for gallery display while the original file is preserved for download; uploader name now always shows as a caption - Hosts can send a thank-you note (email/SMS) to guests who RSVP'd yes - Guests can add the event to Google Calendar or download an .ics file, and see a live countdown to the event - Hosts can override a theme's primary/accent colors per event - New textures for a few themes' card backgrounds
73 lines
2.1 KiB
YAML
73 lines
2.1 KiB
YAML
services:
|
|
app:
|
|
build:
|
|
context: .
|
|
args:
|
|
# Baked into the client bundle at build time - see Dockerfile.
|
|
NEXT_PUBLIC_VAPID_PUBLIC_KEY: ${NEXT_PUBLIC_VAPID_PUBLIC_KEY:-}
|
|
ports:
|
|
- "3101:3100"
|
|
environment:
|
|
PORT: 3100
|
|
DATABASE_URL: ${DATABASE_URL:-postgresql://einvite:einvite@postgres:5432/einvite?schema=public}
|
|
APP_URL: ${APP_URL:-http://localhost:3101}
|
|
SESSION_SECRET: ${SESSION_SECRET:-change-me-to-a-long-random-string}
|
|
COOKIE_SECURE: ${COOKIE_SECURE:-false}
|
|
SMTP_HOST: ${SMTP_HOST:-mailpit}
|
|
SMTP_PORT: ${SMTP_PORT:-1025}
|
|
SMTP_USER: ${SMTP_USER:-}
|
|
SMTP_PASS: ${SMTP_PASS:-}
|
|
SMTP_FROM: ${SMTP_FROM:-E-Invite <invites@example.com>}
|
|
SMTP_SECURE: ${SMTP_SECURE:-false}
|
|
NEXT_PUBLIC_VAPID_PUBLIC_KEY: ${NEXT_PUBLIC_VAPID_PUBLIC_KEY:-}
|
|
VAPID_PRIVATE_KEY: ${VAPID_PRIVATE_KEY:-}
|
|
VAPID_CONTACT_EMAIL: ${VAPID_CONTACT_EMAIL:-admin@example.com}
|
|
TWILIO_ACCOUNT_SID: ${TWILIO_ACCOUNT_SID:-}
|
|
TWILIO_AUTH_TOKEN: ${TWILIO_AUTH_TOKEN:-}
|
|
TWILIO_PHONE_NUMBER: ${TWILIO_PHONE_NUMBER:-}
|
|
volumes:
|
|
- uploads-data:/app/public/uploads
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
mailpit:
|
|
condition: service_started
|
|
healthcheck:
|
|
test: ["CMD", "node", "-e", "fetch('http://localhost:3100/api/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
start_period: 20s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
POSTGRES_USER: einvite
|
|
POSTGRES_PASSWORD: einvite
|
|
POSTGRES_DB: einvite
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U einvite"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
restart: unless-stopped
|
|
|
|
mailpit:
|
|
image: axllent/mailpit:latest
|
|
ports:
|
|
- "8025:8025" # web UI: view caught emails at http://localhost:8025
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
postgres-data:
|
|
uploads-data:
|
|
|
|
networks:
|
|
default:
|
|
ipam:
|
|
config:
|
|
- subnet: 10.89.0.0/24
|