Claude 2b3d6a540c Add DOCX export endpoint and Export button
- GET /api/export generates a Word document with all non-archived prayers
- Accepts ?status=active|answered|all and ?tag= query params to match
  the current filter/tag selection in the UI
- Document sections: Active Prayers + Answered Prayers with page break,
  each prayer showing person, request, answer, dates, and tags
- Styled with Palatino Linotype, page numbers in footer
- Export button in the toolbar triggers download of dated .docx file

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DReRqHxSYuVfCzTzQGD9hZ
2026-07-18 23:36:25 +00:00

Prayer Journal

A todo-list style prayer app. Add prayer requests, record how God answered them, filter between active and answered, and tag entries for organization. Data persists to a mounted Docker volume.

Running with Docker

docker compose up -d

The docker-compose.yml pulls ghcr.io/nmemmert/prayer:latest automatically. Open http://localhost:3000.

Build locally

docker compose up --build -d

Data persistence

Prayer data is stored in /data/prayers.json inside the container, mounted as the named Docker volume prayer-data. Data survives container restarts and image updates.

To inspect or back up your data:

# Print current prayers
docker compose exec prayer cat /data/prayers.json

# Copy to host
docker cp $(docker compose ps -q prayer):/data/prayers.json ./prayers-backup.json

To wipe all data:

docker compose down -v

Using a host-bind mount instead of a named volume

Replace the volumes block in docker-compose.yml:

volumes:
  - ./prayer-data:/data

CI / CD

Pushes to main trigger a GitHub Actions workflow (.github/workflows/docker.yml) that:

  1. Builds the Docker image (multi-stage: Node 20 → Node 20 slim)
  2. Pushes to GitHub Container Registry (ghcr.io/nmemmert/prayer)
  3. Tags the image as latest, the branch name, and the short commit SHA

Pull requests run the build step only (no push).

The GITHUB_TOKEN secret is used automatically — no additional secrets are required.

Development

npm install
npm start        # React dev server on :3000 (uses localStorage, no backend)
node server.js   # API server on :4000 (reads/writes data/prayers.json)

For full local dev with the backend:

node server.js &
REACT_APP_API_BASE=http://localhost:4000 npm start

Stack

Layer Technology
Frontend React 18, TypeScript
Backend Node.js, Express
Data JSON file on a Docker volume
Images GitHub Container Registry (ghcr)
CI/CD GitHub Actions
S
Description
No description provided
Readme
1.3 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 73.3%
JavaScript 15.6%
CSS 8%
Dockerfile 1%
HTML 0.7%
Other 1.4%