First, thank you so much for considering contributing to the project. Contributors mean a lot to us, it's people like you that grow our community and make this project so fun to work on.
Please consider joining our Discord server. This is where contributors communicate. We have all project discussions there.
If you have any questions, our Discord server is the place to ask.
- Node.js 22+
- pnpm 10+
-
Fork and clone the repo
git clone https://github.com/freestyle-voice/freestyle.git cd freestyle -
Install dependencies
pnpm install
-
Start development
pnpm dev
This starts the Electron app with hot-reloading via
electron-vite. The embedded Hono server starts automatically on a local port.On first launch, macOS will prompt for:
- Microphone access
- Accessibility access (required for paste simulation and global key listener)
# macOS
pnpm --filter @freestyle/electron build:mac
# Windows
pnpm --filter @freestyle/electron build:win
# Linux
pnpm --filter @freestyle/electron build:linuxapps/electron— Electron desktop app (main process + React renderer)apps/server— Hono API server (embedded in the Electron app)
- Create a branch from
main - Make your changes
- Run
pnpm biome check .to verify lint and formatting - Run
pnpm --filter @freestyle/electron typecheck:webto verify types - Commit — husky runs biome on staged files automatically
- Open a PR against
main
- Biome for linting and formatting (not ESLint/Prettier)
- 2-space indentation, 80-char line width
- Imports are auto-sorted by Biome
Follow conventional commits:
feat: add new feature
fix: resolve a bug
chore: maintenance task