Wedding Photo Booth · Docs

Wedding Photo Booth · Docs

Architecture

                  ┌─────────┐
  Internet ──▶    │  Caddy  │
  :80 / :443      │  (TLS)  │
                  └────┬────┘
                       │
            ┌──────────┼──────────┐
            ▼          │          ▼
     ┌──────────┐      │   ┌──────────┐
     │ Next.js  │      │   │Next.js   │
     │ :3000    │      │   │ :3001    │
     │(production)│    │   │(develop) │
     └────┬─────┘      │   └────┬─────┘
          │            │        │
     ┌────▼─────┐      │   ┌────▼─────┐
     │PocketBase│      │   │PocketBase│
     │ :8090    │      │   │ :8091    │
     └──────────┘      │   └──────────┘
                       │
  am-party.pl         dev.am-party.pl

Services

Service Image Port Notes
Caddy caddy:latest 80, 443 Auto‑TLS via Let’s Encrypt
wedding-app $CI_REGISTRY_IMAGE 3000 Next.js 16 standalone
pocketbase custom 8090 PocketBase 0.39.4, internal only

Environments

Environment Branch Domain Compose project
Production main am-party.pl wedding
Develop develop dev.am-party.pl wedding-dev

Pipeline

scan → check → test → build → release (main) → deploy

Secrets

All sensitive values live in GitLab CI Variables (Settings → CI/CD → Variables):

Variable Purpose
WEDDING_SESSION_SECRET HMAC signing key for auth cookies
POCKETBASE_ADMIN_EMAIL PB superuser
POCKETBASE_ADMIN_PASSWORD PB superuser
WEDDING_APP_URL Public URL (used by QR generator)
VPS_HOST VPS IP or hostname
VPS_USER SSH user
VPS_SSH_KEY SSH private key