Skip to content

A prayer scheduler integrated with Microsoft Teams. Making it easier for Muslim professionals to plan for prayer times.

License

Notifications You must be signed in to change notification settings

iamshahd/SalatiScheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SalatiScheduler

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.

Status

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).

Tech stack

  • Python
  • FastAPI + Uvicorn
  • Requests
  • AlAdhan as the prayer-time provider (pluggable)
  • uv for dependency and environment management (pyproject.toml + uv.lock)

Setup

Install dependencies and create the environment:

uv sync

Activate the environment (if you're using the default .venv location):

# Linux / macOS
source .venv/bin/activate

# Windows (PowerShell)
.venv\Scripts\Activate.ps1

Run the server (adjust port if needed):

uv run uvicorn app.main:app --app-dir src --host 127.0.0.1 --port 9090

Then open:

Main endpoints

  • GET /health Basic health check.

  • GET /user/settings Get current user settings (location, method, durations).

  • PUT /user/settings Update user settings.

  • GET /prayer-times/today Get 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-DD Compute suggested prayer slots for the given day (no calendar writes).

  • POST /schedule/day/apply?day=YYYY-MM-DD Compute and (later) write prayer events into the user’s calendar.

Next steps

  • 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.

About

A prayer scheduler integrated with Microsoft Teams. Making it easier for Muslim professionals to plan for prayer times.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages