Skip to content

Latest commit

 

History

History
96 lines (66 loc) · 2.41 KB

File metadata and controls

96 lines (66 loc) · 2.41 KB

Freestyle

Contributing

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.

Join our Discord

Discord

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.

Prerequisites

  • Node.js 22+
  • pnpm 10+

Setup

  1. Fork and clone the repo

    git clone https://github.com/freestyle-voice/freestyle.git
    cd freestyle
  2. Install dependencies

    pnpm install
  3. 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:

    1. Microphone access
    2. Accessibility access (required for paste simulation and global key listener)

Build

# macOS
pnpm --filter @freestyle/electron build:mac

# Windows
pnpm --filter @freestyle/electron build:win

# Linux
pnpm --filter @freestyle/electron build:linux

Project structure

  • apps/electron — Electron desktop app (main process + React renderer)
  • apps/server — Hono API server (embedded in the Electron app)

Development workflow

  1. Create a branch from main
  2. Make your changes
  3. Run pnpm biome check . to verify lint and formatting
  4. Run pnpm --filter @freestyle/electron typecheck:web to verify types
  5. Commit — husky runs biome on staged files automatically
  6. Open a PR against main

Code style

  • Biome for linting and formatting (not ESLint/Prettier)
  • 2-space indentation, 80-char line width
  • Imports are auto-sorted by Biome

Commit messages

Follow conventional commits:

feat: add new feature
fix: resolve a bug
chore: maintenance task