Skip to content

Tasks checklist app (tasks.justinsforge.com)

Mobile-first clickable task list so triage is one tap, not a natural-language round-trip. Built 2026-06-06 after Justin pointed out NL is worse than a checkbox for completion.

  • Code: scripts/forge_tasks_checklist_app.py (Flask, self-contained, HTML inline)
  • Service: forge-tasks-checklist.service on Console, port 8097, enabled+Restart=on-failure
  • Public: https://tasks.justinsforge.com via VR Alliance tunnel (the *.justinsforge.com tunnel on Console), gated by Cloudflare Access (allow [email protected], app uid 64e2d18b-5f6f-4b6f-9dc5-246221c72b14)
  • Home link: gold CTA button at top of justinsforge.com landing (sites/justinsforge.com/landing/index.html, under the tagline)

Behavior

  • Live-fetches each Tasks DB on every load via Notion public API (NOTION_INTEGRATION_TOKEN in ~/.forge-secrets/notion-cookie.env); never drifts from Notion.
  • Brand tabs: Life / JWVR / Nova / Fishing / Bass (DB ids hardcoded in the app, from [[notion-scaffold]]).
  • Tap a checkbox -> POST /complete PATCHes Notion Status=Done + stamps Done At. Idempotent.
  • Shows non-Done tasks only, display-deduped by lowercased title (the duplicate rows still exist in Notion; checking one off flips only the row the page points at).

Notes

  • Same Status=Done write path the Telegram coordinator's tool_update_task uses (forge_telegram_inbox_brain.py).
  • To add a brand or change DB ids: edit TASKS_DBS in the app.
  • Verified end-to-end on a throwaway task: tap -> Notion Status=Done + Done At stamped.

[Claude Code, 2026-06-06]