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>
This commit is contained in:
nmemmertandClaude Sonnet 4.6 committed 2026-08-26 14:37:56 -04:00
1 parent eb6cbcc3d4
commit 8add7ddc10
1 file changed
+54 -103
+54 -103
View File
@@ -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.