Initial Camp Scan ticketing system
Backend (Fastify + TS): FluentForms webhook -> NocoDB row + QR + MailerSend email; PIN auth; scan/lookup/redeem with per-code serialization; reusable QR codes with count-based check-in; admin search. App (Expo, one codebase): Android APK + iPhone PWA. Login, camera scanner (native + web barcode-detector split), green/red overlay with sound + haptics, admin lookup/redeem. Session token persisted per device. Ops: multi-stage Dockerfile serving API + PWA same-origin, compose bound to 127.0.0.1; Forgejo Actions runner + tag-triggered signed APK build for Obtainium. Docs in README.md and INSTALL.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
commit
3397e3e3ec
60 changed files with 14703 additions and 0 deletions
20
docker-compose.yml
Normal file
20
docker-compose.yml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
services:
|
||||
camptickets:
|
||||
build: .
|
||||
image: camptickets:latest
|
||||
container_name: camptickets
|
||||
env_file: .env
|
||||
environment:
|
||||
# Container always listens on 8080 internally; the host mapping below is
|
||||
# what nginx proxies to. Keep this fixed regardless of .env PORT.
|
||||
PORT: "8080"
|
||||
HOST: "0.0.0.0"
|
||||
ports:
|
||||
# Bind to localhost only — nginx (on the host) terminates TLS for
|
||||
# scan.beartariacampgrounds.com and proxies to this port.
|
||||
- "127.0.0.1:${HOST_PORT:-8091}:8080"
|
||||
# NocoDB runs elsewhere (its own container/host). If it is on THIS host,
|
||||
# host.docker.internal resolves to the host gateway.
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
restart: unless-stopped
|
||||
Loading…
Add table
Add a link
Reference in a new issue