Files
nmemmertandClaude Sonnet 4.6 8add7ddc10 Update README for v0.4.0 and Gitea migration
Rewrite to accurately reflect current stack (Next.js + Express/JSON server),
Docker deployment, ntfy push notifications, and Gitea CI setup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-26 14:37:56 -04:00

2.4 KiB

Prayer Journal

A minimalist web app for journaling daily prayers, tracking answered prayers, and receiving push reminders. Self-hostable via Docker.

Current version: 0.4.0

Features

  • Daily prayer composition with optional "Pray For" person
  • Mark prayers as answered with notes
  • Calendar view of past entries
  • Reflections list with search and filters
  • Answered prayers gallery
  • Push notifications via ntfy (no account required) — daily digest and per-prayer reminders
  • Export prayer log as PDF or DOCX
  • PWA installable, dark theme by default

Stack

  • Frontend: Next.js + React, Tailwind CSS, Firebase (auth + Firestore)
  • Backend: Express server (server.js) — local JSON storage, cron-based ntfy notifications, DOCX/PDF export
  • Container: Docker, published to git.necloud.us
docker compose up -d

The app listens on port 3050 by default. Adjust environment variables in docker-compose.yml as needed.

Environment variables

Variable Description
FIREBASE_PROJECT_ID Firebase project ID
FIREBASE_CLIENT_EMAIL Firebase Admin SDK service account email
FIREBASE_PRIVATE_KEY Firebase Admin SDK private key
NODE_ENV Set to production for Docker deploys

Store secrets in a .env file and reference them in docker-compose.yml — do not hardcode private keys in compose files.

Push notifications (ntfy)

ntfy requires no account. Set your topic in the app's Settings, then notifications arrive via the ntfy app or any ntfy-compatible client.

  • Daily digest — morning summary of unprayed prayers
  • Per-prayer reminders — cron-scheduled nudges for individual prayers
  • Test notification — trigger one from the Settings page to verify

Development

npm install
npm run dev

App runs at http://localhost:3000.

npm run build    # production build
npm run lint     # lint
npm test         # run tests

CI / Deployment

Pushes to master trigger a Gitea Actions workflow (.gitea/workflows/docker.yml) that builds and pushes the Docker image to git.necloud.us.

Secrets required in Gitea repo settings:

Secret Value
REGISTRY_USER Gitea username
REGISTRY_TOKEN Gitea access token with package write scope

Versioning

Semantic versioning — npm run version:minor or npm run version:major bumps the version and syncs it across the project.