Skip to content

lbruton/WhoseOnFirst

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

207 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WhoseOnFirst

Automated on-call rotation and SMS notification system

Python FastAPI Version Codacy


WhoseOnFirst manages shift assignments and sends daily SMS notifications to on-call team members. The system uses a circular rotation algorithm to ensure fair, predictable shift distribution.

Features

  • Role-based access control — Admin and Viewer roles with session-based authentication
  • Configurable shifts — 24-hour and 48-hour shifts with flexible day assignments
  • Automated SMS — Daily 8:00 AM CST notifications via Twilio with customizable templates
  • Schedule overrides — Manual coverage swaps for vacation, sick leave, or on-demand changes
  • Drag-and-drop ordering — Reorder rotation priority with a simple drag interface
  • Data portability — Full backup/restore for migration between environments

Screenshots

Login

Secure session-based authentication with admin and viewer roles.

Login

Dashboard

At-a-glance view of who's on call today, the escalation chain, and a color-coded monthly calendar showing the full rotation.

Dashboard

Team Members

Manage the on-call roster. Each member gets a unique color for calendar visibility. Drag the grip icon to reorder rotation priority.

Team Members

Shift Configuration

Define your weekly shift template. Each shift maps to a day (or days for 48-hour doubles). The coverage chart shows gaps at a glance.

Shift Configuration

Schedule Generation

Generate rotation schedules weeks in advance. Auto-renew keeps the schedule rolling. Export to CSV for offline reference.

Schedule Generation

Notifications

SMS notification history with delivery status tracking. Customize the message template with dynamic placeholders for name, date, and time.

Notifications

Schedule Overrides

Swap coverage for vacation or sick days without disrupting the rotation. Override history tracks who covered for whom and why.

Schedule Overrides

Admin

Export a full database backup or restore from a previous backup. The restore is atomic — if anything fails, no data is changed.

Admin - Backup & Restore

Help & Setup Guide

Step-by-step Twilio configuration walkthrough, environment variable reference, and troubleshooting FAQ.

Help & Setup Guide


Technology Stack

Component Technology
Backend FastAPI, Python 3.12
Database SQLite with SQLAlchemy ORM
Scheduler APScheduler
SMS Twilio
Frontend Vanilla JS, Tabler CSS
Container Red Hat UBI9 (OpenShift compatible)

Quick Start

# Clone and start
git clone <repo-url>
cd WhoseOnFirst
docker-compose up -d

# Access at http://localhost:8000
# Default admin: admin / Admin123!
# Default viewer: viewer / Viewer123!

Change passwords immediately after first login.


Acknowledgments


Version 1.6.1 · Changelog

About

On Call Managment

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors