A Progressive Web Application (PWA) for tracking daily spiritual disciplines during the 90-day Exodus 90 program leading up to Easter. This app helps participants maintain accountability by tracking 15 different daily practices including prayer, fasting, cold showers, and spiritual reading.
A free to use production website can be found at reditusmen.com.
- 90-Day Tracker: Automatically calculates and tracks 90 days leading to Easter
- Daily Checklist: Track 15 different spiritual and lifestyle practices
- Reditus Men Dailing Readings: Complete all 4 Gospels over the course of 90 days
- Wed/Fri Fasting Support: The app only shows the fasting options on Wed and Fri
- Workout Counter: Tracks workouts per week with an indicator for the manditory 3
- Calendar Heatmap: Visual progress report showing completion patterns
- Offline Support: Full PWA functionality with offline data persistence
- Mobile Optimized: Responsive design that works seamlessly on all devices
- Local Storage: All data stored locally for privacy
- No build process required: Deploy files as-is
- PWA manifest: Built-in, enables installability
- Service worker: Provides offline functionality
- Clone the repository:
git clone git@github.com:brockers/reditusmen.git
cd reditusmen- For Development: Run a local HTTP server using npx:
npx http-server- Open app
The app will be available at http://localhost:8080
The project includes comprehensive unit and integration tests using QUnit:
Open test runner directly in browser
xdg-open tests/test-runner.htmlOr serve with any static web server
npx http-server # Then navigate to http://localhost:8080/tests/test-runner.htmlTest Coverage:
- Date calculations (Easter date, 90-day period)
- Week number calculations
- Data structure validation
- localStorage persistence
- DOM element interactions
- Checkbox state management
- Gospel reading calculations
This application is designed as a static website deployed via AWS infrastructure:
Production Architecture:
- Hosting: AWS S3 bucket configured for static website hosting
- CDN: CloudFront distribution for global content delivery
- Domain: Production site running at reditusmen.com
AWS Deployment Steps:
- Upload the following files to S3 bucket maintaining directory structure
disciple90/
├── index.html # Main application HTML
├── script.js # Core application logic
├── style.css # Styling and animations
├── manifest.json # PWA configuration
├── favicon.ico # Site icon
├── favicon.svg # Vector site icon
├── images/ # Icons and screenshots
└── *.min.js # Minified third-party libraries
- Ensure bucket has static website hosting enabled
- Configure CloudFront distribution to point to S3 origin
- Set appropriate cache behaviors for assets
- Configure custom domain and SSL certificate
Key Deployment Considerations:
The application automatically calculates the 90-day period based on Easter. To update for a new year:
- Open
script.js - Find line 712:
const easterDate = new Date('04/05/2026'); - Update to the correct Easter date
- The app will automatically recalculate all 90 days
When making changes, update the version number in index.html:
<meta name="version" content="3.0.0" />CloudFront will continue to provide your old static files unless to invalidate the current files from the CloudFront Edge services. To do that, you will need to go to your distribution in CloudFront and create an invalidation. You can find more details at Invalidating Files to Remove Content
- Vanilla JavaScript - No framework dependencies
- D3.js v7 - Data visualization
- Cal-Heatmap - Calendar heatmap display
- Flatpickr - Date picker functionality
- Progressive Web App - Installable and offline-capable
All data is stored locally in your browser's localStorage. No data is sent to external servers. Data persists across sessions but can be cleared through browser settings.
Feel free to submit issues and pull requests via Github. The project uses a simple architecture with no build process, making it easy to contribute.
For issues or questions, please open an issue on GitHub or contact through the repository.