Prayer Times LK
Prayer times from ACJU, turned from monthly posters into dependable structured data.
- Kind
- Product
- Role
- Solo: pipeline, data model, web app
- Period
- 2026
- Status
- Live
- Stack
- TypeScript, Cheerio, Vite, Cloudflare Workers
Where do official prayer times come from, and how do you turn published posters into data people can rely on?

The source problem
ACJU publishes prayer times the traditional way: thirteen zone posters per month, each as an image and a PDF. That is authoritative but not machine-readable, and a wrong table sends people to prayer at the wrong time.
Pipeline
The project treats the posters as the source of truth and builds a pipeline around them: scrape the live page and extract each zone’s table, cross-check values, reconcile disagreements, and sync the result into the web app’s data.
The web app builds with Vite and deploys to Cloudflare Workers, so there is no server to babysit and the numbers shown are exactly what the pipeline last verified.
Posters are the source of truth
Rather than trusting a third-party API of unclear provenance, the pipeline reads ACJU’s own published material and keeps the mapping from zone to source file visible.
More parsing work every month, but the data lineage is defensible.
Want something like this built?
Email me