# CommiTea AI project manager built on Gitea. A deterministic scheduler does the math (Monte Carlo forecasts over your own estimate-vs-actual history); the agent — Reginald — captures work via interview, negotiates priorities, and explains the consequences. Gitea holds human-authored intent; a `pm-state` repo holds machine-derived state. The LLM never does math. ## Structure - `apps/desktop` — Electron app (electron-vite, React, Tailwind) - `packages/core` — pure TypeScript: label schema, scheduler, gitea client (no Electron imports) - `docs/PLAN.md` — product plan (goals, phases, not-doing list) - `docs/design/` — design handoff: tokens, component contracts, interactive prototype (`docs/design/ui_kits/app/index.html` via a static server), brand voice rules in `design_system_readme.md` ## Development ```sh yarn # install yarn dev # electron app, logs tee to apps/desktop/desktop.log yarn test # unit tests (vitest) yarn typecheck ``` ## Conventions - Yarn 4 workspaces; ESM everywhere; `.js` extensions on relative imports - `@commitea/core` stays pure — unit-testable without Electron or network - Design tokens are the source of truth (`apps/desktop/src/renderer/src/design/`, mirrored from `docs/design/`); Tailwind maps onto the CSS custom properties, never redefines them - Reginald's voice rules live in `docs/design/design_system_readme.md` — no emoji, no point-date forecasts, wit in sentences never in buttons