Spaces:
Sleeping
Sleeping
| # Contributing to Mission Control | |
| Thank you for your interest in contributing to Mission Control. | |
| ## Getting Started | |
| ```bash | |
| # Clone the repo | |
| git clone https://github.com/builderz-labs/mission-control.git | |
| cd mission-control | |
| # Install dependencies | |
| pnpm install | |
| # Copy environment config | |
| cp .env.example .env | |
| # Edit .env with your values | |
| # Start development server | |
| pnpm dev | |
| ``` | |
| ## Development Workflow | |
| 1. Fork the repository and create a feature branch from `main`. | |
| 2. Make your changes β keep commits focused and descriptive. | |
| 3. Run the quality gate before submitting: | |
| ```bash | |
| pnpm quality:gate # lint + typecheck + test + e2e + build | |
| ``` | |
| 4. Open a pull request against `main` using the PR template. | |
| ## Code Style | |
| - TypeScript strict mode β no `any` unless absolutely necessary. | |
| - Tailwind CSS for styling β use semantic design tokens (`text-foreground`, `bg-card`, etc.). | |
| - Server components by default; `'use client'` only when needed. | |
| - API routes use `requireRole()` for auth and return JSON responses. | |
| ## Project Structure | |
| - `src/app/api/` β Next.js API routes (REST endpoints) | |
| - `src/components/panels/` β Feature panels rendered by the SPA shell | |
| - `src/components/layout/` β Navigation, header, and layout components | |
| - `src/lib/` β Shared utilities (auth, database, config, scheduler) | |
| - `src/store/` β Zustand state management | |
| ## Testing | |
| - **Unit tests**: Vitest β `pnpm test` | |
| - **E2E tests**: Playwright β `pnpm test:e2e` | |
| - **Type checking**: `pnpm typecheck` | |
| - **Lint**: `pnpm lint` | |
| ## Reporting Bugs | |
| Open an issue with: | |
| - Steps to reproduce | |
| - Expected vs actual behavior | |
| - Browser/OS/Node version | |
| ## License | |
| By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE). | |