Making it easier for Muslim professionals with busy calendars to plan for prayer times.
SalatiScheduler is a small backend service that automatically finds time for daily prayers in a user’s calendar. It:
- Fetches daily prayer times based on location (currently via the AlAdhan API).
- Computes valid windows for each prayer (Fajr–Sunrise, Dhuhr–Asr, etc.).
- Suggests a configurable slot length (default 15 minutes) inside each window.
- (Future) Integrates with Microsoft 365 / Teams calendar via Microsoft Graph to block those slots.
Early prototype:
- FastAPI backend up and running.
- User settings stored locally in a JSON file.
- Prayer times and schedule preview logic working end-to-end.
- Calendar integration is currently a stub (no real Graph calls yet).
- Python
- FastAPI + Uvicorn
- Requests
- AlAdhan as the prayer-time provider (pluggable)
uvfor dependency and environment management (pyproject.toml+uv.lock)
Install dependencies and create the environment:
uv syncActivate the environment (if you're using the default .venv location):
# Linux / macOS
source .venv/bin/activate
# Windows (PowerShell)
.venv\Scripts\Activate.ps1Run the server (adjust port if needed):
uv run uvicorn app.main:app --app-dir src --host 127.0.0.1 --port 9090Then open:
- http://127.0.0.1:9090/health – health check
-
GET /healthBasic health check. -
GET /user/settingsGet current user settings (location, method, durations). -
PUT /user/settingsUpdate user settings. -
GET /prayer-times/todayGet today’s prayer times for the configured location. -
GET /prayer-times/{date}Get prayer times for a specific day (YYYY-MM-DD). -
GET /schedule/day/preview?day=YYYY-MM-DDCompute suggested prayer slots for the given day (no calendar writes). -
POST /schedule/day/apply?day=YYYY-MM-DDCompute and (later) write prayer events into the user’s calendar.
- Add tests and CI.
- Implement real Microsoft Graph integration (read/write calendar).
- Support per-prayer durations and high-latitude settings.
- Add authentication and multi-user support.