Bring the checklist app under version control

The project has lived only as a folder on the Mac Studio and, briefly, as a
transfer tarball. This is the first commit: the Express server and its web
front end, the Capacitor iOS and Android wrappers, and the release and backup
scripts.

The repo is the source, not a backup of the machine. Left out on purpose, by
the .gitignore files that were already in the tree: node_modules, build output,
mobile/www (regenerated from server/public on every build), and server/data,
which holds the live checklists and belongs on the NAS rather than in git.

Every credential is excluded too — server/.env, the Play upload keystore and
its properties file, the App Store Connect key and ios-signing.config. The one
secret that was not in an ignored file was the NAS SSH password, hard-coded in
build-deploy.sh and grepped back out of it by backup-to-drive.sh. Both now read
it from the login keychain (service checklist-nas, account Christian), falling
back to NAS_PASS in the environment, so rotating it is one keychain entry
rather than a history rewrite.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Waters Church
2026-09-24 13:00:57 -04:00
co-authored by Claude Opus 5
commit 469db5bc60
177 changed files with 33247 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
# ────────────────────────────────────────────────────────────────
# Recurring Checklist — server configuration
# Copy this file to .env and fill in your values.
# ────────────────────────────────────────────────────────────────
# Port the web server listens on (inside the container).
PORT=3000
# Password required to manage lists (add / rename / delete / import / export).
# Anyone without this password can only check items off.
ADMIN_PASSWORD=changeme
# ─── Email digest ────────────────────────────────────────────────
# REPORT_EMAIL gets the GLOBAL digest (every location/team in one email) — keep
# it set for an at-a-glance master copy. PER-TEAM digests are configured in-app
# under Manage Users: each team login can have its own report recipient(s), and
# those go out on the same schedule below, one email per team. Leave REPORT_EMAIL
# blank to send only the per-team emails.
REPORT_EMAIL=you@example.com
# Cron schedule for the digest. Default: every Sunday at 3:00 PM.
# Format: minute hour day-of-month month day-of-week
REPORT_CRON=0 15 * * 0
# IANA timezone the cron runs in.
REPORT_TZ=America/New_York
# After the digest is sent, automatically uncheck all items so the
# list is fresh for next week. Set to "false" to disable.
RESET_AFTER_DIGEST=true
# ─── SMTP (Gmail app-password example) ───────────────────────────
# For Gmail: enable 2-factor auth on your Google account, then create
# an "App Password" at https://myaccount.google.com/apppasswords and
# paste it into SMTP_PASS below.
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=you@gmail.com
SMTP_PASS=your-16-char-app-password
SMTP_FROM=Recurring Checklist <you@gmail.com>