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
+31
View File
@@ -0,0 +1,31 @@
{
"name": "recurring-checklist-mobile",
"version": "1.0.0",
"private": true,
"description": "Native iOS/Android shells for the Recurring Checklist web app. The web app in ../server/public is the single source of truth for all UI; these shells bundle a copy of it and talk to the production server as a JSON API.",
"scripts": {
"sync:web": "node scripts/sync-web.js",
"sync": "npm run sync:web && npx cap sync",
"open:ios": "npx cap open ios",
"open:android": "npx cap open android",
"assets": "npx @capacitor/assets generate --iconBackgroundColor '#1d2026' --iconBackgroundColorDark '#1d2026' --splashBackgroundColor '#14161b' --splashBackgroundColorDark '#14161b'"
},
"dependencies": {
"@capacitor/android": "8.5.1",
"@capacitor/app": "8.1.1",
"@capacitor/browser": "8.0.4",
"@capacitor/core": "8.5.1",
"@capacitor/haptics": "8.0.2",
"@capacitor/ios": "8.5.1",
"@capacitor/keyboard": "8.0.5",
"@capacitor/network": "8.0.1",
"@capacitor/splash-screen": "8.0.2",
"@capacitor/status-bar": "8.0.3"
},
"devDependencies": {
"@capacitor/assets": "3.0.5",
"@capacitor/cli": "8.5.1",
"@googleapis/androidpublisher": "^42.0.0",
"esbuild": "0.25.10"
}
}