From 8add7ddc1080bca3724693f943e893d8594add6b Mon Sep 17 00:00:00 2001 From: nmemmert <67961292+nmemmert@users.noreply.github.com> Date: Wed, 26 Aug 2026 14:37:56 -0400 Subject: [PATCH] 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 --- README.md | 157 +++++++++++++++++++----------------------------------- 1 file changed, 54 insertions(+), 103 deletions(-) diff --git a/README.md b/README.md index 3eba617..d38d8a9 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,79 @@ -# Haver — Prayer App +# Prayer Journal -A minimalist PWA for journaling prayers and tracking answered prayers. Built with Next.js, Firebase, and Tailwind. +A minimalist web app for journaling daily prayers, tracking answered prayers, and receiving push reminders. Self-hostable via Docker. -Current Version: 0.2.0 - -## What's New (0.2.0) -- Redesign: unified dark theme and gradients -- Icons: lucide-react across headings and nav -- Cleanup: removed legacy email routes and pages -- UX: Pray For suggestions in compose tab +**Current version: 0.4.0** ## Features -- Firebase auth (login) -- Compose daily prayer with date and optional "Pray For" -- Suggested "Pray For" names via dropdown (type to add new) -- Mark prayers as answered with details -- Calendar view of entries + +- 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 -- Reminder banner + notification time settings -- PWA installable; dark theme by default +- 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 -## Versioning Policy -- Uses semantic versioning: major.minor -- Minor: UI/UX tweaks, non-breaking features -- Major: structural changes or breaking updates +## Stack -## Setup -1. Create a Firebase project (Authentication + Firestore) -2. Add your Firebase config to [src/lib/firebase.ts](src/lib/firebase.ts) -3. Start the dev server +- **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` -## Notes -- Email sending routes have been removed in the redesign. -- Email verification remains available via Firebase. +## Docker (recommended) -## Firestore Rules -Deploy [firestore.rules](firestore.rules) to secure user data. +```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 -- `npm run dev` — start dev server -- `npm run build` — production build -- `npm run lint` — lint code -- `npm test` — run tests - -## Troubleshooting - -### Common Issues - -1. **Firebase Configuration**: Ensure all Firebase config values are correctly set in `src/lib/firebase.ts`. - -2. **SMTP Settings**: Verify SMTP credentials in the Admin panel. Use app passwords for Gmail. - -3. **PWA Installation**: Clear browser cache if PWA doesn't install properly. - -4. **Email Reminders**: Check Firestore security rules and ensure SMTP is configured. - -### Development - -- Run `npm run dev` for development server -- Run `npm run build` for production build -- Run `npm run lint` for code linting -- Run `npm test` for running tests - -## Usage -- Compose: write your prayer, pick a date, and optionally select or type a "Pray For" name. -- Praying: mark prayers as prayed today. -- Calendar: click a day to view/edit its entry. -- Reflections: search and filter past prayers. -- Answered: review answered prayers with details. -- About: set reminder time, test notifications, and read "What's New". - -## Getting Started - -## Build & Deploy -```bash -npm run build -``` -Deploy to Vercel or your preferred platform. - -## Getting Started - -First, install dependencies: ```bash npm install -``` - -Then, run the development server: - -```bash npm run dev -# or -yarn dev -# or -pnpm dev -# or -bun dev ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. - -This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. - -## Configuration - -For email reminders, configure SMTP settings in `src/app/api/send-email/route.ts`. - -## Build +App runs at `http://localhost:3000`. ```bash -npm run build +npm run build # production build +npm run lint # lint +npm test # run tests ``` -## Deploy +## CI / Deployment -Deploy to Vercel or any platform supporting Next.js PWAs. +Pushes to `master` trigger a Gitea Actions workflow (`.gitea/workflows/docker.yml`) that builds and pushes the Docker image to `git.necloud.us`. -## Docker (optional) -Basic containerization is available. Remove or adapt scripts as needed. +Secrets required in Gitea repo settings: -## Learn More -- [Next.js Documentation](https://nextjs.org/docs) -- [Tailwind CSS](https://tailwindcss.com/docs) -``` +| 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.