Skip to content

Repository files navigation

¶ Preact Ops Postmortem Builder

A blameless postmortem editor for incident narrative, evidence, causal factors, actions, and review.

Preact TypeScript Tailwind CSS IndexedDB Vite

Deploy with Vercel


✨ Highlights

  • Editable Narrative: Maintains executive summary, customer impact, and detection gap in a focused document surface.
  • Evidence Timeline: Adds and removes timestamped signals, decisions, actions, and recovery events with source context.
  • Causal Analysis: Groups technology, process, and people factors and marks explicit root factors.
  • Action Register: Requires owner, due date, priority, status, and measurable success criteria.
  • Review Workflow: Captures reviewer approval and calculates document publication readiness.
  • Publish Gate: Prevents publication until narrative, recovery, root factor, action quality, and approvals are complete.

🧱 Project Structure

public/
|-- favicon.svg
`-- sample-postmortem.json
src/
|-- app.tsx
|-- main.tsx
|-- index.css
|-- components/
|   |-- action-register.tsx
|   |-- factor-board.tsx
|   |-- incident-narrative.tsx
|   |-- review-panel.tsx
|   `-- timeline-editor.tsx
|-- domain/
|   `-- postmortem.ts
`-- services/
    `-- workspace-store.ts

🛠️ Tech Stack

  • Preact 10 with Vite 8
  • TypeScript 6
  • Tailwind CSS 4
  • date-fns
  • @preact/signals
  • idb-keyval
  • zod
  • nanoid
  • lucide-preact

📦 Included Sample Data

public/sample-postmortem.json contains a complete SEV-1 review with impact narrative, sourced timeline, contributing factors, corrective actions, and assigned reviewers.

🚀 Local Development

npm install
npm run dev

Open http://localhost:5173.

🔌 Extension Notes & Nuances

  • Publication readiness is a transparent domain function, not a decorative progress score.
  • Reviewer buttons simulate approval locally; identity and authorization must be server-controlled in production.
  • New factors require supporting evidence, while new actions require an owner, due date, priority, and measurable outcome.
  • Editing a published document automatically returns it to review so stale approvals cannot silently remain valid.
  • Draft state is stored in IndexedDB and can be reset to the full sample at any time.

🧪 Build & Checks

npm run format:check
npm run build
npm run preview

🌐 Vercel Deployment

The repository includes a Vite-ready vercel.json with SPA rewrites.

{
  "$schema": "https://openapi.vercel.sh/vercel.json",
  "framework": "vite",
  "buildCommand": "npm run build",
  "outputDirectory": "dist",
  "rewrites": [
    {
      "source": "/(.*)",
      "destination": "/index.html"
    }
  ]
}

📄 License

MIT License. See LICENSE.

Releases

Packages

Contributors

Languages