Status Page
Developer Tools · React + Node (Express) · 17 @molecule/* packages
Statuspage-like with incidents, component monitoring, uptime history, and subscriber notifications — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (19)
- PublicStatus
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - IncidentList
/incidents(signed in) - IncidentDetail
/incidents/:id(signed in) - Components
/components(signed in) - Subscribers
/subscribers(signed in) - Settings
/settings(signed in) - IncidentForm
/incidents/new(signed in) - ComponentDetail
/components/:id(signed in) - MaintenanceList
/maintenance(signed in) - MaintenanceDetail
/maintenance/:id(signed in) - Profile
/profile(signed in) - Notifications
/notifications(signed in) - Team
/team(signed in) - AuditLog
/audit(signed in)
Data model (14 tables)
- audit_log — id, user_id, actor_user_id, action, scope, target, summary, payload, …
- checks — id, serviceId, status, httpStatus, latencyMs, error, checkedAt
- component_status_history — id, component_id, status, changed_at, created_at, updatedAt
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- incident_updates — id, incident_id, status, message, posted_by, created_at, updatedAt
- incidents — id, createdAt, updatedAt, serviceId, title, description, severity, status, …
- maintenance — id, user_id, title, message, scheduled_for, scheduled_until, duration_minutes, affected_components, …
- notifications — id, user_id, kind, title, body, payload, read_at, created_at, …
- services — id, createdAt, updatedAt, name, url, method, expectedStatus, timeoutMs, …
- status_components — id, user_id, name, description, group, status, monitor_url, uptime_pct_90, …
- status_subscribers — id, user_id, channel, destination, email, notification_type, components, is_confirmed, …
- team_members — id, user_id, member_id, name, email, role, on_call, shift, …
- uptimeWindows — id, serviceId, window, uptimePct, totalChecks, upChecks, avgLatencyMs
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
API (9 handlers)
- \_audit
api/src/handlers/_audit.ts - audit
api/src/handlers/audit.ts - components
api/src/handlers/components.ts - incidents
api/src/handlers/incidents.ts - maintenance
api/src/handlers/maintenance.ts - notifications
api/src/handlers/notifications.ts - public
api/src/handlers/public.ts - subscribers
api/src/handlers/subscribers.ts - team
api/src/handlers/team.ts
Subscription tiers
free / pro / team — gated by: maxComponents, maxIncidents, maxSubscribers, advancedFeatures, canExport, retentionDays
Built from 17 @molecule/* packages
@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-http-fetch@molecule/api-notifications-webhook@molecule/api-payments-stripe@molecule/api-resource-payment@molecule/api-resource-status-page@molecule/api-resource-user@molecule/app-badge@molecule/app-billing-react@molecule/app-charts@molecule/app-data-table@molecule/app-timeline@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection string
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing