An offline-first engineering incident notebook that syncs later with deterministic merge semantics and postmortem generation.
- Local incident journal domain model (
LocalIncidentJournal) - Deterministic event-log merge (
mergeEventLogs) with Lamport-aware conflict handling - Markdown postmortem generator (
generatePostmortem) - Vitest test suite and runnable MVP example
- Shows distributed systems thinking in a practical workflow.
- Demonstrates local-first behavior: collect first, sync later.
- Produces concrete output (postmortem draft) from operational event data.
npm install
npm test
npm run build
npm run dev:examplesrc/types.ts: core types for incident domainsrc/crdt.ts: merge logic for concurrent/offline logssrc/journal.ts: local journal aggregatesrc/postmortem.ts: postmortem markdown renderertests/journal.test.ts: merge + rendering testsexamples/mvp-flow.ts: end-to-end sample flow
- Persist local log in IndexedDB/SQLite adapter
- Add real CRDT library adapter (Yjs/Automerge) for multi-device sync
- Add timeline UI + diff view for conflicting edits
- Add export to Slack/Notion/GitHub issue template