Thank you for your interest in contributing! This project is a self-hosted, multi-model AI chat platform powered by the GitHub Copilot SDK.
- Fork the repo and clone it
- Install dependencies:
npm install - Create a
.envfile (see README for required variables) - Run in development mode:
npm run dev
| Command | Purpose |
|---|---|
npm run dev |
Start via Docker Compose |
npm run build |
Production build |
npm run check |
Type check with svelte-check |
npm run test:unit |
Run unit and integration tests with Vitest |
npm run test:unit:coverage |
Run Vitest with coverage reporting |
npm run test:unit:watch |
Run Vitest in watch mode |
npx playwright test |
Run E2E tests |
- Node.js 24+ (required for
node:sqliteused by the Copilot SDK) - GitHub OAuth App — register one (Device Flow, no client secret needed)
- Copilot license — free tier works
Use the following commands when validating changes locally:
- Run unit and integration tests:
npm run test:unit - Run unit tests with coverage:
npm run test:unit:coverage - Run E2E tests:
npx playwright test - Run Vitest in watch mode during development:
npm run test:unit:watch
- Keep test files next to the source they cover using the
*.test.tsnaming pattern - Update or add tests for all new code and any behavior you modify
- Update
docs/TEST-MATRIX.mdwhenever a feature area is added, changed, or removed
- Write test names that describe the behavior being verified
- Mock at system boundaries instead of mocking internal implementation details
- Cover error paths and failure states, not just the happy path
- TypeScript — strict mode, no
any - Svelte 5 — runes only (
$state,$derived,$effect,$props) - Factory functions over classes
- Named exports only
- kebab-case filenames
- Component-scoped CSS with custom properties for theming
- Create a feature branch from
main - Make your changes with clear, focused commits
- Ensure
npm run checkandnpm run buildpass - Open a PR with a clear description of what and why
- Use the issue templates when available
- Include steps to reproduce for bugs
- Include browser/OS info for UI issues
By contributing, you agree that your contributions will be licensed under the MIT License.