Skip to content
Open — Source is public on GitHub2026

Built for my company

Three readings
Client
Built for my company: the team keeps prayer times in a Slack Canvas, and a few minutes before each one the bot posts the reminder in the channel — nobody has to remember to.
Recruiter
Slack bot in TypeScript, driven by a team-edited Slack Canvas and run free on GitHub Actions every five minutes, with a kill switch, weekend and holiday skips and per-prayer messages.
Engineer
Exactly-once on a five-minute cron: each tick parses the Canvas, posts whatever is due, then commits a dedupe marker back to the repo so a retry never double-posts.

What it does

  • Prayer reminders posted to the team channel a few minutes before each time
  • Times edited by anyone in a Slack Canvas — no code, no redeploy
  • Weekends and holidays skipped, with a kill switch and custom messages per prayer

Under the hood

  • All logic in framework-agnostic TypeScript, shared by the CI script and an optional dashboard
  • A strict line parser over the Canvas: anything that does not match is ignored, never guessed at
  • Runs free on a GitHub Actions cron, with the committed dedupe marker making every post exactly-once

Built with

  • TypeScript
  • Slack API
  • Slack Canvas
  • GitHub Actions
  • Zod
  • Next.js