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:
1 parent
eb6cbcc3d4
commit
8add7ddc10
1 file changed
+54
-103
@@ -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
|
**Current version: 0.4.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
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
- Firebase auth (login)
|
|
||||||
- Compose daily prayer with date and optional "Pray For"
|
- Daily prayer composition with optional "Pray For" person
|
||||||
- Suggested "Pray For" names via dropdown (type to add new)
|
- Mark prayers as answered with notes
|
||||||
- Mark prayers as answered with details
|
- Calendar view of past entries
|
||||||
- Calendar view of entries
|
|
||||||
- Reflections list with search and filters
|
- Reflections list with search and filters
|
||||||
- Answered prayers gallery
|
- Answered prayers gallery
|
||||||
- Reminder banner + notification time settings
|
- Push notifications via [ntfy](https://ntfy.sh) (no account required) — daily digest and per-prayer reminders
|
||||||
- PWA installable; dark theme by default
|
- Export prayer log as PDF or DOCX
|
||||||
|
- PWA installable, dark theme by default
|
||||||
|
|
||||||
## Versioning Policy
|
## Stack
|
||||||
- Uses semantic versioning: major.minor
|
|
||||||
- Minor: UI/UX tweaks, non-breaking features
|
|
||||||
- Major: structural changes or breaking updates
|
|
||||||
|
|
||||||
## Setup
|
- **Frontend**: Next.js + React, Tailwind CSS, Firebase (auth + Firestore)
|
||||||
1. Create a Firebase project (Authentication + Firestore)
|
- **Backend**: Express server (`server.js`) — local JSON storage, cron-based ntfy notifications, DOCX/PDF export
|
||||||
2. Add your Firebase config to [src/lib/firebase.ts](src/lib/firebase.ts)
|
- **Container**: Docker, published to `git.necloud.us`
|
||||||
3. Start the dev server
|
|
||||||
|
|
||||||
## Notes
|
## Docker (recommended)
|
||||||
- Email sending routes have been removed in the redesign.
|
|
||||||
- Email verification remains available via Firebase.
|
|
||||||
|
|
||||||
## Firestore Rules
|
```bash
|
||||||
Deploy [firestore.rules](firestore.rules) to secure user data.
|
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
|
## 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
|
```bash
|
||||||
npm install
|
npm install
|
||||||
```
|
|
||||||
|
|
||||||
Then, run the development server:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run dev
|
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.
|
App runs at `http://localhost:3000`.
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
```bash
|
```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)
|
Secrets required in Gitea repo settings:
|
||||||
Basic containerization is available. Remove or adapt scripts as needed.
|
|
||||||
|
|
||||||
## Learn More
|
| Secret | Value |
|
||||||
- [Next.js Documentation](https://nextjs.org/docs)
|
|---|---|
|
||||||
- [Tailwind CSS](https://tailwindcss.com/docs)
|
| `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.
|
||||||
Reference in new issue
Block a user