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
|
||||
|
||||
## 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.
|
||||
Reference in new issue
Block a user