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>
80 lines
2.4 KiB
Markdown
80 lines
2.4 KiB
Markdown
# 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](https://ntfy.sh) (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 (recommended)
|
|
|
|
```bash
|
|
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](https://ntfy.sh) 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
|
|
|
|
```bash
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
App runs at `http://localhost:3000`.
|
|
|
|
```bash
|
|
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.
|