A web application for looking up daily and monthly Islamic prayer (Salah) times across South African cities. Prayer times are scraped from masjids.co.za rather than computed from astronomical formulas.
- Live site: salaahtimes.vercel.app
- API: prayer-times-api-six.vercel.app
This is a two-project monorepo. Each project is self-contained and deploys independently to Vercel.
| Project | Stack | Description |
|---|---|---|
api/ |
Python, FastAPI | Scrapes prayer times and serves them as a REST API |
ui/ |
React, TypeScript, Vite | Public-facing web app that consumes the API |
┌─────────────────────┐ HTTPS ┌──────────────────────────────┐
│ ui (React/Vite) │ ────────────────────▶│ api (FastAPI on Vercel) │
│ salaahtimes. │ VITE_API_URL │ prayer-times-api-six. │
│ vercel.app │ │ vercel.app │
└─────────────────────┘ └──────────────┬───────────────┘
│ scrape
▼
┌──────────────────────────────┐
│ masjids.co.za/salaahtimes │
└──────────────────────────────┘
Benoni, Bergville, Bloemfontein, Cape Town (default), Colesberg, Durban, East London, Johannesburg, Kimberley, King William's Town, Pietermaritzburg, Port Elizabeth, Pretoria.
Run each project from its own directory. To develop the full stack locally, start the API first, then point the UI at it.
cd api
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reload # http://127.0.0.1:8000cd ui
npm install
echo "VITE_API_URL=http://127.0.0.1:8000" > .env # point at the local API
npm run dev # http://localhost:5173If you skip creating .env, the UI falls back to the production API.
See each project's README for full details:
Both projects deploy separately to Vercel (connect the repo for automatic deployments, or run vercel from within each directory).