Skip to content

marko00djokic/OpsHub

Repository files navigation

OpsHub – Incident & Resilience Workbench

OpsHub is a Laravel 12 / PHP 8.3 application for managing incidents, runbooks, postmortems, action items, and public status updates. The goal is to give on-call teams an “ops control center” that’s easy to onboard, auditable, and visually consistent.

Project snapshot (portfolio-ready)

  • Domain: Incident lifecycle (report → triage → timeline/events → artifacts → runbooks → postmortem → action items).
  • RBAC: Admin / On-call / Member / Viewer with policy-backed access; seeded demo accounts for quick trials.
  • Design system: Custom AppShell (sidebar + topbar), tokens, dark/light theme toggle, responsive table→card patterns.
  • Data flows implemented: incidents with filters and severity/status transitions, runbook linkage, postmortem draft/publish, action items tied to incidents/postmortems, search/export/audit, public status page toggle.
  • Operability: Queue jobs (notifications/webhooks/digest), HMAC-protected webhooks, rate limiting, security headers, CI for lint/tests.

Tech stack

  • Laravel 12, PHP 8.3, MySQL 8
  • Vite + Tailwind v4-based custom tokens/components
  • Queue: database driver; jobs for notifications/webhooks/digests
  • PDF/CSV exports, auth+policies, status page, audit log

What’s built (high level)

  • Access & seed: Auth flows, roles, demo users; admin UI for role assignment.
  • Incidents: CRUD, status transitions, filters (status/severity/service/owner/date), timeline events, artifacts (link/log/file).
  • Runbooks: Markdown CRUD, tagging, service mapping, version snapshots; link runbooks to incidents.
  • Postmortems: Generate from incident, edit/publish flow, action items linked back to incidents/postmortems.
  • Action Items: Status/priority/due/assignee; quick updates; global filtered view.
  • Notifications & webhooks: Slack/email toggle, webhook handler with HMAC, digest/check jobs.
  • Public status page: Optional token-protected view with services and public incident updates.
  • Search/Export/Audit: Global search, incident/postmortem PDF exports, action items CSV, audit log with filters.

UI highlights

  • Custom design system in resources/css/design-system/* with reusable tokens, dark/light theme switcher, and responsive cards/tables.
  • Sidebar/topbar AppShell with global search, quick actions, and language toggle (SR/EN for static copy).
  • Incident list: filter bar, accessible focus states, no horizontal scroll on mobile (cards).
  • Dashboard: quick stats, recent incidents, runbook/postmortem/action-item shortcuts, seeded credential hints.

Setup (local)

  1. composer install
  2. cp .env.example .env and set DB_*
  3. php artisan key:generate
  4. php artisan migrate --seed
  5. Run: php artisan serve (or ./start.sh for LAMPP)
  6. Frontend: npm install then npm run dev (or npm run build for prod)

Demo accounts

  • Admin admin@opshub.test / password
  • On-call oncall@opshub.test / password
  • Member member@opshub.test / password
  • Viewer viewer@opshub.test / password

Development & CI

  • Tests: php artisan test (uses sqlite memory; switch to MySQL via env vars if needed)
  • Formatting: ./vendor/bin/pint (add --test to verify)
  • CI: .github/workflows/ci.yml installs deps, generates key, runs Pint and tests on clean checkout.

Roadmap ideas

  • Templated incident playbooks per service/severity
  • Better SLA/SLO tracking with burn-rate alerts
  • Rich editor for timelines and artifact previews
  • Service-level status analytics and uptime reports

About

Operations management system — Laravel/Blade

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors