Files
jury-rigged/Dockerfile
⓪ηηωεε忧世 c08d3ddcc1 feat: Phase 7 — Ace Attorney overlay, NDJSON replay, Twitch integration, Prometheus metrics
Phase 7 features:
- Ace Attorney-style PixiJS renderer with camera presets, character poses,
  dialogue typewriter, and effects engine
- Render directives inferred from role, phase, and dialogue keywords
- Structured case file generated at session start with witness roster,
  evidence inventory, and charge sheet
- Witness statement events emitted during examination
- Audience interaction endpoints: POST /press and /present with rate limiting
- Twitch chat adapter (press, present, objection commands)
- NDJSON session recording and deterministic replay (CLI flags + env vars)
- SSE fixture recorder for browser overlay replay
- Prometheus metrics endpoint (GET /api/metrics) with session lifecycle,
  vote latency, SSE connection, and phase transition telemetry
- Docker: TRUST_PROXY support, 127.0.0.1 bind, network isolation

Quality review fixes:
- C1: Rate-limit /press and /present endpoints (10 req/IP/10s)
- C2: Fix Twitch objection to read current count and increment properly
- I1: Document /api/metrics in README, docs/api.md, operator-runbook
- I2: Comment out unused TWITCH_EVENTSUB_SECRET in .env.example
- I3: Fix event-taxonomy render_directive schema (poses/faces maps)
- I4: Deduplicate dashboard event mapping into session-snapshot.ts
- M1: Match Ace Attorney keywords with or without trailing punctuation
- M3: Add SSE fixture recording docs to docs/api.md
2026-02-28 17:17:59 +00:00

35 lines
636 B
Docker

# syntax=docker/dockerfile:1.7
FROM node:22-alpine AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY tsconfig.json ./
COPY vite.config.ts ./
COPY postcss.config.js ./
COPY tailwind.config.js ./
COPY src ./src
COPY dashboard ./dashboard
COPY public ./public
COPY db ./db
RUN npm run build
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY package.json package-lock.json ./
RUN npm ci --omit=dev
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/public ./public
COPY --from=builder /app/db ./db
EXPOSE 3001
CMD ["sh", "-c", "npm run migrate:dist && npm run start"]