Live at https://horarium.us
A Progressive Web App for a small men’s group at St. Agatha St. James parish (West Philadelphia) to track a shared rule of life across the liturgical year — prayer, fasting, almsgiving, fraternity, stewardship, and asceticism.
Tagline: A faithful rhythm for every season.
- Daily checklist across six categories: Prayer, Fasting, Almsgiving & Works of Charity, Fraternity, Stewardship, and Asceticism
- Progress tracking with a visual progress bar and day counter
- Daily notes with auto-save
- Date navigation through the current season with a “Go to Today” shortcut
- Weekly item tracking (e.g., 2/3 exercise sessions completed this week)
- Offline support via Service Worker with cache-first strategy
- Optional user accounts for syncing data across multiple devices
- Brother accountability — invite a brother to see each other’s progress
- Installable as a standalone app on mobile (PWA) or via the Android TWA wrapper
- Frontend: Vanilla HTML, CSS, and JavaScript (no frameworks, no build step)
- Backend: PHP + MySQL
- Auth: Token-based (64-character hex Bearer tokens)
- Hosting: Apache with HTTPS
/ Root (single-page app)
├── index.html App entry point
├── app.js Application logic
├── style.css Styling (CSS custom properties, mobile-first)
├── sw.js Service Worker
├── manifest.json PWA manifest
├── HORARIUM-NAME.md Naming decision record
├── .htaccess Apache rewrites & SW cache control
├── api/ PHP API endpoints
│ ├── config.php DB connection, CORS, auth helpers
│ ├── login.php Authentication
│ ├── register.php Account creation
│ ├── data.php Checklist data sync (GET/POST)
│ ├── logout.php Token invalidation
│ └── private/ Credentials & schema (not served by HTTP)
├── android-twa/ Android Trusted Web Activity wrapper
├── documents/ Planning docs & specs
├── favicon_io/ Icons and favicons
└── .well-known/ Digital Asset Links for Android app verification
Checklist data is stored in localStorage for offline use. Users who create an account get automatic server sync with timestamp-based conflict resolution (most recent change wins).
- Serve the project root with Apache (HTTPS recommended). Canonical host:
horarium.us. - Copy
api/private/secrets.example.phptoapi/private/secrets.phpand fill in your MySQL credentials. - Run the SQL scripts in
api/private/to create the database tables. - Visit the app in a browser and optionally install it to your home screen.
Horarium is an independent, open-source project built by and for a parish men’s group. It is not affiliated with, endorsed by, sponsored by, or connected to XDS, Inc., Exodus, Inc., or the Exodus 90 or Exodus 40 programs. “Exodus 90” and “Exodus 40” are referenced here only descriptively, to acknowledge an influence on this project’s approach to fraternity-based ascetical practice. All trademarks are the property of their respective owners.
See HORARIUM-NAME.md for the full naming decision record.