generated from nathanwoodburn/python-webserver-template
main
🕊️ Prayer Journal
A clean, responsive, and collaborative web application to track prayers, share lists with family and friends, and record God's answered prayers and testimonies.
Features
- Simple & Flexible Authentication:
- Sign in with Email and Password.
- Quick Login Link (1-Click URL): Each user has a private bookmarkable URL to sign in instantly with one click without typing their password. Tokens can be regenerated at any time.
- Personal & Group Prayer Lists:
- Automatically creates a private "My Personal Prayers" list for each user upon registration.
- Create custom Personal lists (strictly private, non-shareable) or Group lists (collaborative).
- Switch between specific lists or view all prayers in a unified dashboard.
- List Sharing & Guest Access:
- Non-Shareable Personal Lists: Personal lists are private to the user and cannot be shared or joined.
- Guest Viewing & Editing: Group invite links (
/join/<token>) allow guests to view, create, edit, update, and celebrate answered prayers directly without needing to register or create an account. - Direct Email Invites: Add existing registered users directly to your group list by entering their email address.
- Member Management: List owners can see all group members and manage roles.
- Prayer Tracking & Praise Wall:
- Add prayer requests with titles, scripture/details, and a dedicated "Person we are praying for" field.
- Add ongoing progress updates and praise notes to any prayer request (with guest author attribution).
- Mark as Answered: Record when a prayer was answered and write a testimony of God's provision.
- Preserves History: Answered prayers are never lost or automatically deleted, building a permanent praise wall of God's faithfulness.
- Re-open answered prayers at any time if ongoing prayer is needed.
- Dark Mode (Automatic or Manual Override):
- Supports automatic detection using device/browser system settings (
prefers-color-scheme: dark). - Sleek header theme toggle allows manually forcing Light, Dark, or System theme.
- Theme choices persist in
localStoragefor instant page loads (no flashing) and sync to the user's account in the database.
- Supports automatic detection using device/browser system settings (
- Real-Time Live Synchronization Across Devices:
- Changes made on any device (phone, laptop, tablet) or by fellow group members appear instantly without refreshing the page.
- Automatic version tracking on lists detects new prayers, progress notes, testimonies, reopened prayers, and edits.
- Lightweight background polling engine with visibility/tab-focus optimization and non-intrusive DOM swapping.
- Visual Live Sync indicator with pulsing status dot and toast notifications when updates are received from other devices.
- Full AJAX modal form submissions for smooth, instant saving without full page reloads.
- Admin Panel & Moderation:
- Full administrator dashboard at
/adminaccessible to authorized admins. - First registered user (or email defined by
ADMIN_EMAIL) is automatically granted admin privileges. - View platform stats: total users, list breakdown, active vs answered prayer rates, and database/system info.
- Manage users (promote/demote admin roles, delete accounts), moderate prayer lists, and remove inappropriate requests.
- Full administrator dashboard at
- Clean & Mobile-Friendly:
- Responsive, peaceful UI that works seamlessly on desktop, tablets, and phones.
- Search prayers in real time with keyword filtering.
Requirements
- Python >= 3.13
- UV
Development
-
Install project dependencies:
uv sync -
Run the development server:
uv run python3 server.pyThe app will be available at
http://127.0.0.1:5000. -
Run the test suite:
PYTHONPATH=. uv run python3 -m unittest discover -v tests -
Pre-commit hooks (linter and formatter):
uv run pre-commit install uv run pre-commit run --all-files
Production
Run using Gunicorn via main.py:
python3 main.py
Docker
docker build -t prayer-journal .
docker run -p 5000:5000 -v $(pwd)/data:/app/data prayer-journal
Configuration
Environment variables can be specified in .env:
SECRET_KEY: Secret key for session security (defaults to a built-in key for dev).PRAYER_DB_PATH: Custom path for SQLite database file (defaults todata/prayer_journal.db).BASE_DIR: Base directory for persistent data (defaults todata).WORKERS: Gunicorn worker processes (defaults to1).THREADS: Gunicorn worker threads (defaults to2).
Languages
HTML
42.3%
Python
38.9%
CSS
16.7%
JavaScript
1.9%
Dockerfile
0.2%