Phase 0: scaffold cup26 — Vite+React+Fastify TS PWA, broadcast theme, app shell
Mirrors the TTRPG stack (strict TS, Tailwind 4, vite-plugin-pwa, esbuild server bundle, multi-stage Dockerfile, Traefik compose). Floodlit-pitch design tokens, UI primitives (Button/Card/Badge), TanStack Router shell with Live/Groups/ Bracket/Predict/Story routes (placeholders), dependency-free PWA icon generator. Raw data staged: openfootball 2026 fixtures + martj42 international results CSV. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# Self-contained compose project for cup26.briggen.dev.
|
||||
# Deploy: rsync the repo to /root/cup26/, place this file there as
|
||||
# docker-compose.yml, then `docker compose up -d --build`.
|
||||
# Joins the EXISTING external `proxy` network — the shared Traefik stack is untouched.
|
||||
name: cup26
|
||||
|
||||
services:
|
||||
cup26:
|
||||
build: .
|
||||
container_name: cup26
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PORT=8787
|
||||
- STATIC_DIR=/app/dist
|
||||
- NODE_ENV=production
|
||||
- ALLOWED_ORIGINS=https://cup26.briggen.dev
|
||||
# football-data.org free API token (https://www.football-data.org/client/register)
|
||||
- FOOTBALL_DATA_TOKEN=${FOOTBALL_DATA_TOKEN:-}
|
||||
# opt-in: layer the unofficial real-time source on top of the free API
|
||||
- ENABLE_SOFASCORE=${ENABLE_SOFASCORE:-false}
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
mem_limit: 384m
|
||||
memswap_limit: 384m
|
||||
pids_limit: 200
|
||||
cpus: 1.0
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.cup26.rule=Host(`cup26.briggen.dev`)"
|
||||
- "traefik.http.routers.cup26.entrypoints=websecure"
|
||||
- "traefik.http.routers.cup26.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.cup26.loadbalancer.server.port=8787"
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
Reference in New Issue
Block a user