Oncall Management
Operations & IoT · React + Node (Express) · 18 @molecule/* packages
PagerDuty-like on-call management with rotation schedules, escalation policies, incident alerting, acknowledge/resolve workflow, and postmortems — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (23)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - Incidents
/incidents(signed in) - IncidentDetail
/incidents/:id(signed in) - Schedules
/schedules(signed in) - ScheduleDetail
/schedules/:id(signed in) - EscalationPolicies
/escalation-policies(signed in) - Postmortems
/postmortems(signed in) - PostmortemDetail
/postmortems/:id(signed in) - Team
/team(signed in) - Notifications
/notifications(signed in) - Settings
/settings(signed in) - Profile
/profile(signed in) - Pricing
/pricing - PlanUpdated
/plan-updated(signed in) - About
/about - Privacy
/privacy - Terms
/terms - NotFound
/404
Data model (17 tables)
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- notifications — id, createdAt, updatedAt, user_id, kind, severity, title, detail, …
- team_members — id, user_id, member_id, name, email, role, timezone, oncall, …
- team_invites — id, user_id, email, role, status, created_at
- user_api_keys — id, user_id, name, prefix, last_used_at, last_used_label, created_at, revoked_at
- user_sessions_view — id, user_id, user_agent, ip_address, city, is_current, last_seen_at, created_at
- connected_accounts — id, user_id, provider, provider_username, connected, connected_at
- org_settings — id, user_id, org_name, region, retention_days, created_at, updated_at
- org_integrations — id, user_id, name, detail, connected, created_at
- schedules — id, user_id, name, description, timezone, rotation_type, handoff_time, members, …
- schedule_shifts — id, user_id, schedule_id, member_id, start_at, end_at, is_override, note, …
- escalation_policies — id, user_id, name, description, repeat_cycles, is_active, created_at, updated_at
- escalation_rules — id, user_id, policy_id, position, notify_member_id, notify_channel, wait_minutes, created_at
- incidents — id, user_id, title, description, severity, status, service, assigned_member_id, …
- incident_events — id, user_id, incident_id, kind, actor, text, at, created_at
- postmortems — id, user_id, incident_id, title, summary, contributing_factors, status, created_at, …
- postmortem_action_items — id, user_id, postmortem_id, description, owner_member_id, status, due_at, created_at, …
API (11 handlers)
- \_roster
api/src/handlers/_roster.ts - \_seed
api/src/handlers/_seed.ts - escalation-policies
api/src/handlers/escalation-policies.ts - incidents
api/src/handlers/incidents.ts - notifications
api/src/handlers/notifications.ts - overview
api/src/handlers/overview.ts - postmortems
api/src/handlers/postmortems.ts - profile
api/src/handlers/profile.ts - schedules
api/src/handlers/schedules.ts - settings
api/src/handlers/settings.ts - team
api/src/handlers/team.ts
Subscription tiers
free / pro / team — gated by: maxPolicies, maxSchedules, maxOpenIncidents, maxPostmortems, advancedFeatures, canExport, retentionDays
Built from 18 @molecule/* packages
@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-notifications-webhook@molecule/api-payments-stripe@molecule/api-reporting-database@molecule/api-resource-notification@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/app-billing-react@molecule/app-charts@molecule/app-command-palette@molecule/app-data-table@molecule/app-keyboard-shortcuts@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringSTRIPE_SECRET_KEYStripe secret API key (sk_test_... in test mode)STRIPE_WEBHOOK_SECRETStripe webhook signing secret (whsec_...)
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing