Skip to content

Engineering Knowledge

Distilled wisdom from the Kendo app codebase — the parts that aren't visible in code.

What lives here

The Kendo app repo (~/Code/kendo) is the authoritative source for how it works now:

  • ~/Code/kendo/CLAUDE.md — top-level conventions, skills, workflow
  • ~/Code/kendo/ARCHITECTURE.md — system architecture
  • ~/Code/kendo/backend/CLAUDE.md — backend rules (Action pattern, DTOs, transactions)
  • ~/Code/kendo/frontend/CLAUDE.md — frontend rules (components, composables, stores)

This folder is why we built it that way — content that disappears if you only read code:

  • The alternative we rejected and the reason we chose the current approach
  • Iterations that didn't work before the shipped one
  • Surprises discovered during implementation
  • Cross-cutting patterns that recurred across multiple plans
  • Bug root causes — why something slipped past tests into prod

Layout

FileScope
lessons-learned.mdCross-cutting wisdom: recurring traps, "next time" rules
postmortems.mdBug postmortems — root cause and what changed
decisions/<domain>.mdPer-domain decision logs — chose / rejected / why (see Domain coverage below)

Domain coverage

The decisions/ folder splits by feature domain so a search for "broadcast" or "auth" lands in one focused file instead of 145 plan dirs.

DomainFileIssues covered
Auth & sessionsdecisions/auth.md15
Permissions & RBACdecisions/permissions.md12
Multi-tenancydecisions/multi-tenancy.md17
MCP toolingdecisions/mcp.md19
Broadcasting & real-timedecisions/broadcasting.md18
Reports & feedbackdecisions/reports.md14
Notificationsdecisions/notifications.md11
Attachments & filesdecisions/attachments.md13
Time trackingdecisions/time-tracking.md9
AI featuresdecisions/ai-features.md10
CLI & distributiondecisions/cli.md6
Integrations (GitHub, Stripe, Mattermost)decisions/integrations.md10
Issues, sprints, epics, boarddecisions/issues-board.md33
UI conventionsdecisions/ui-conventions.md30
Platform & infradecisions/platform.md17

Provenance

Distilled from 145 DECISIONS.md files and 36 bug postmortems in ~/Code/kendo/docs/plans/ and ~/Code/kendo/docs/bugs/ — those source dirs were deleted after this wiki was verified, since their unique value is captured here and their implementation lives in the codebase.

Each decision entry cites the originating issue (e.g., Source: KD-0067) — search Kendo or git log for full historical context.

Conventions for contributors

  • New decisions go straight here, not into a new plans/ doc — plans now live on feature branches alongside the implementation, and get folded into these domain files when shipped.
  • Don't write what the code already shows. If a reader can grep for it, don't put it here.
  • Each entry is short: Chose + Rejected + Why + Source. Anything longer is probably reiterating the implementation.