2.5 KiB
2.5 KiB
Contributing to OpenChamber
Getting Started
git clone https://github.com/btriapitsyn/openchamber.git
cd openchamber
bun install
Dev Scripts
Web
| Script | Description | Ports |
|---|---|---|
bun run dev:web:full |
Build watcher + Express server. No HMR — manual refresh after changes. | 3001 (server + static) |
bun run dev:web:hmr |
Vite dev server + Express API. Open the Vite URL for HMR, not the backend. | 5180 (Vite HMR), 3902 (API) |
Both are configurable via env vars: OPENCHAMBER_PORT, OPENCHAMBER_HMR_UI_PORT, OPENCHAMBER_HMR_API_PORT.
Desktop (Tauri)
bun run desktop:dev
Launches Tauri in dev mode with WebView devtools enabled and a distinct dev icon.
VS Code Extension
bun run vscode:dev # Watch mode (extension + webview rebuild on save)
To test in VS Code:
bun run vscode:build && code --extensionDevelopmentPath="$(pwd)/packages/vscode"
Shared UI (packages/ui)
No dev server — this is a source-level library consumed by other packages. During development, bun run dev runs type-checking in watch mode.
Before Submitting
bun run type-check # Must pass
bun run lint # Must pass
bun run build # Must succeed
Code Style
- Functional React components only
- TypeScript strict mode — no
anywithout justification - Use existing theme colors/typography from
packages/ui/src/lib/theme/— don't add new ones - Components must support light and dark themes
- Prefer early returns and
if/else/switchover nested ternaries - Tailwind v4 for styling; typography via
packages/ui/src/lib/typography.ts
Pull Requests
- Fork and create a branch
- Make changes
- Run the validation commands above
- Submit PR with clear description of what and why
Project Structure
packages/
ui/ Shared React components, hooks, stores, and theme system
web/ Web server (Express) + frontend (Vite) + CLI
desktop/ Tauri macOS app (thin shell around the web UI)
vscode/ VS Code extension (extension host + webview)
See AGENTS.md for detailed architecture reference.
Not a developer?
You can still help:
- Report bugs or UX issues — even "this felt confusing" is valuable feedback
- Test on different devices, browsers, or OS versions
- Suggest features or improvements via issues
- Help others in Discord