Thanks for your interest in contributing! Mission Control is an open-source task management system designed for solo entrepreneurs supervising AI agents.
- Node.js v20+ (LTS recommended)
- pnpm v9+ (
npm install -g pnpm) - Git
git clone https://github.com/MeisnerDan/mission-control.git
cd mission-control/mission-control # repo folder → app folder (where package.json lives)
pnpm install
pnpm devThe app runs at http://localhost:3000.
pnpm seed:demopnpm dev # Start dev server
pnpm build # Production build
pnpm tsc --noEmit # Type check
pnpm lint # ESLint
pnpm test # Run all 193 tests (Vitest)
pnpm check # Typecheck + lint
pnpm verify # Full verification: typecheck + lint + build + test
pnpm gen:context # Regenerate AI context snapshot- TypeScript strict mode — no
anytypes - Functional components with hooks
"use client"only when needed (interactive pages, hooks)- Named exports preferred
- pnpm only (not npm or yarn)
- Tailwind CSS v4 for styling
- shadcn/ui for UI components
src/
app/ Pages (Next.js App Router)
app/api/ API routes (JSON file CRUD)
components/ React components
hooks/ Custom hooks (data fetching)
lib/ Utilities, types, validation schemas
data/ JSON data files (source of truth)
scripts/ Build/utility scripts
All data lives in data/ as plain JSON files. The web UI accesses them through API routes. AI agents can also read/write these files directly.
When modifying API routes:
- All POST/PUT endpoints must use Zod validation (see
src/lib/validations.ts) - All write operations must use file locking (see
src/lib/data.tsmutex pattern) - Run
pnpm gen:contextafter data file changes
- Fork the repo and create a feature branch
- Make your changes
- Run
pnpm verify— typecheck, lint, build, and all tests must pass with 0 errors - Write a clear PR description explaining what and why
- Submit the PR
- Bug fixes
- UX improvements
- New agent integrations (Cursor, OpenClaw, etc.)
- Performance optimizations
- Accessibility improvements
- Documentation improvements
- Breaking changes to the JSON data schema without migration
- Adding heavy dependencies (keep it lightweight)
- Changes that break the local-first architecture
Open a GitHub issue with:
- Steps to reproduce
- Expected vs actual behavior
- Browser/OS/Node version
By contributing, you agree that your contributions will be licensed under the GNU AGPL v3 License.