# Contributing to D3RO Voice Thank you for your interest in contributing to D3RO Voice! ## Development Setup ### Prerequisites - Node.js 20+ - Python 3.10+ (for faster-whisper sidecar) - Ollama (for LLM features) - Windows 10/11 (primary platform) ### Getting Started ```bash # Clone the repository git clone https://gitlab.twentyoz.kr:8443/d3r0/voice.git cd voice # Install dependencies npm install # Download SoX binary (Windows) npm run setup:sox # Start development npm run dev ``` ### Project Structure ``` src/ main/ # Electron main process (services, IPC, DB) renderer/ # React app (MUI, components, pages) preload/ # contextBridge IPC bridge shared/ # Shared types, IPC channels, errors site/ # Landing page (Vite + React + Tailwind) docs/ # Design documents and phase specs tests/ # Unit tests (vitest) ``` ### Code Standards - TypeScript strict mode (`noImplicitAny`, `strictNullChecks`) - No `any` types - No `console.log` (use electron-log via LoggerService) - Colors via `d3roPalette` CSS variables (no hardcoded hex in components) - UI strings via `t()` i18n function (no hardcoded Korean/English) - Services: singleton + EventEmitter pattern - IPC channels defined in `src/shared/ipc-channels.ts` ### Running Tests ```bash npm run typecheck # Type checking npm run lint # ESLint npm run test # Unit tests ``` ### Building ```bash npm run build # Production build npm run dist # Build + NSIS installer ``` ## Design Documents Before implementing, always reference: - `docs/design/00-master-architecture.md` - `docs/design/01-service-specifications.md` - `docs/design/02-ipc-and-types.md` - `docs/design/03-db-and-ui.md` ## Pull Request Process 1. Create a feature branch from `main` 2. Follow the coding standards above 3. Ensure `npm run typecheck` passes 4. Ensure `npm run test` passes 5. Update CHANGELOG.md if applicable 6. Submit a merge request with a clear description