5 Commits

Author SHA1 Message Date
nmemmert 7006fbf544 Add admin panel restricted to a single designated account
Adds a full admin view (users + projects, with view/delete) gated
server-side by ADMIN_EMAIL in server/auth.js (defaults to the site
owner's account, overridable via env var for other deployments). The
gate is enforced on every /api/admin/* route, not just hidden in the
UI — verified a non-admin session gets 403 even when it hits the
endpoints directly. Deleting a user leaves their projects in place
(not cascade-deleted) so admin cleanup can't accidentally destroy
someone's study data.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-06 13:07:54 -04:00
nmemmert d1861ec5d9 Fix broken test suite and untrack runtime artifacts
- Bridge jsdom localStorage/sessionStorage over Node 22+'s experimental
  globals that vitest's jsdom environment doesn't override
- Update Greek lookup tests to mock the OpenScriptures Strong's
  dictionary instead of the retired bolls.life path
- Update migrateChunk no-op test for backfilled fields
- Match en-dash verse range labels in chunk creation test
- Untrack .api.log/.api.pid and gitignore them

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 16:40:44 -04:00
nmemmert f95d5670ae Stop tracking SQLite database files
Local DB state shouldn't be versioned; only code, migrations, and schema belong in git.
2026-06-10 11:01:32 -04:00
Claude 8e2343da30 Run dev server in background with nohup so it survives terminal close 2026-05-27 13:21:27 +00:00
Claude 509e22ac9e Add .gitignore to exclude node_modules and build artifacts
https://claude.ai/code/session_01C4T3bYHR2svLq7JVcxKJ6Y
2026-05-27 11:04:50 +00:00