raycer - habit accountability PWA for ray and cer
VERSION was stuck at raycer-v1 so mobile PWAs never picked up the streak fix (cache-first served the stale stats.js forever). - Bump to raycer-v2 → triggers install, purges old caches - Switch same-origin assets from cache-first to network-first so future deploys propagate immediately; cache is only used as an offline fallback - Simplify to a single SHELL_CACHE (no separate runtime cache) - Cross-origin vendor assets (Dexie CDN) stay cache-first |
||
|---|---|---|
| backend | ||
| deploy | ||
| frontend | ||
| .editorconfig | ||
| .gitignore | ||
| docker-compose.coolify.yaml | ||
| docker-compose.yml | ||
| README.md | ||
raycer
A minimal habit-accountability PWA for two users (ray and cer).
- Frontend: vanilla HTML/JS/CSS, Dexie.js, service worker, installable PWA
- Backend: Node 20 + Hono + better-sqlite3
- Reverse proxy: Traefik on
raycer.test(see~/Code/Personal_TOOLS/traefik-local-proxy) - Sync: offline-first with outbox + last-write-wins server upsert
Run
docker compose up -d --build
~/Code/Personal_TOOLS/traefik-local-proxy/add-domain.sh raycer
open https://raycer.test
Layout
frontend/ nginx:alpine serving the static PWA, proxies /api to backend
backend/ Hono API + SQLite (volume: raycer-data)
Goals (preseeded)
- No sugar — 2026-04-23 → 2026-05-21
- No social media — 2026-04-23 → 2026-05-21