Vanilla HTML/JS/CSS PWA with Dexie offline-first sync, Hono+SQLite backend, served via nginx reverse-proxy. Two seed goals (no-sugar, no-social-media) for users ray and cer. Local dev runs at https://raycer.test via the shared Traefik proxy. Production deploys to https://raycer.altweb.me on cool2026/personal via docker-compose.coolify.yaml — see deploy/COOLIFY.md.
38 lines
944 B
YAML
38 lines
944 B
YAML
services:
|
|
backend:
|
|
build: ./backend
|
|
restart: unless-stopped
|
|
environment:
|
|
- NODE_ENV=production
|
|
- PORT=3000
|
|
- DB_PATH=/data/raycer.sqlite
|
|
volumes:
|
|
- raycer-data:/data
|
|
networks:
|
|
- default
|
|
|
|
frontend:
|
|
build: ./frontend
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- backend
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.raycer.rule=Host(`raycer.test`)"
|
|
- "traefik.http.routers.raycer.entrypoints=websecure"
|
|
- "traefik.http.routers.raycer.tls=true"
|
|
- "traefik.http.routers.raycer-http.rule=Host(`raycer.test`)"
|
|
- "traefik.http.routers.raycer-http.entrypoints=web"
|
|
- "traefik.http.routers.raycer-http.middlewares=redirect-to-https@file"
|
|
- "traefik.http.services.raycer.loadbalancer.server.port=80"
|
|
networks:
|
|
- proxy-net
|
|
- default
|
|
|
|
networks:
|
|
proxy-net:
|
|
external: true
|
|
default:
|
|
|
|
volumes:
|
|
raycer-data:
|