raycer - habit accountability PWA for ray and cer
Find a file
Spencer Flagg 48deaa3219 feat: PWA install button, route persistence, and active-user visual indicators
- Landing page shows an "add to home screen" button when the browser
  install prompt is available (Android/desktop) or on iOS Safari with
  a share-menu hint; hidden when already running in standalone mode
- Last visited user route (/ray or /cer) is saved to Dexie meta and
  restored on next open so the app reopens where you left off
- Active user in the topbar brand renders as a filled accent-color pill
- A 1px accent-color frame wraps the entire viewport while a user is active
2026-04-23 17:36:14 +02:00
backend Initial commit: raycer accountability PWA 2026-04-23 16:45:06 +02:00
deploy deploy(coolify): record raycer app uuid and docker_compose_domains binding 2026-04-23 17:13:07 +02:00
frontend feat: PWA install button, route persistence, and active-user visual indicators 2026-04-23 17:36:14 +02:00
.editorconfig Initial commit: raycer accountability PWA 2026-04-23 16:45:06 +02:00
.gitignore Initial commit: raycer accountability PWA 2026-04-23 16:45:06 +02:00
docker-compose.coolify.yaml Initial commit: raycer accountability PWA 2026-04-23 16:45:06 +02:00
docker-compose.yml Initial commit: raycer accountability PWA 2026-04-23 16:45:06 +02:00
README.md Initial commit: raycer accountability PWA 2026-04-23 16:45:06 +02:00

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