Skip to content

Developer Guide

Devin AI edited this page Feb 4, 2026 · 1 revision

Developer Guide

Learn how to set up Hyprnote for development and contribute to the project.

Hyprnote uses Taskfile for most development tasks. See **/Taskfile.yaml for available commands.

Prerequisites

Before setting up Hyprnote, ensure you have the following installed:

Mac Setup

Install the required system dependencies via Homebrew:

brew install cmake pkg-config

Install Rust if you haven't already:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Clone the repository and install dependencies:

git clone https://github.com/fastrepl/hyprnote.git
cd hyprnote
pnpm install

Build the UI package before running the desktop app:

pnpm -F ui build

macOS Permissions for Development

When running Hyprnote in development mode, macOS requires you to grant permissions to the terminal application you're using to build and run the app (e.g., Terminal, iTerm2, VS Code, Warp). This is different from the production app, where permissions are granted directly to Hyprnote.

Go to System Settings > Privacy & Security and grant the following permissions to your terminal application:

Microphone: Required for audio capture during development. Without this, the app won't be able to record from your microphone.

Accessibility: Required for certain system-level features. Your terminal needs accessibility access to allow the development build to interact with system APIs.

If you're using VS Code's integrated terminal, you'll need to grant these permissions to Visual Studio Code. For standalone terminals like iTerm2 or the default Terminal app, grant permissions to those applications instead.

After granting permissions, you may need to restart your terminal or IDE for the changes to take effect.

Linux Setup

For Ubuntu-based distributions, run the setup script:

bash scripts/setup-linux.sh

This script installs all required system dependencies including GTK, PulseAudio, and Tauri prerequisites. It also installs development tools like dprint, Taskfile, and Supabase CLI.

After running the setup script, clone the repository and install dependencies:

git clone https://github.com/fastrepl/hyprnote.git
cd hyprnote
pnpm install

Running the App

We use pnpm for workspace management and package management.

Desktop (apps/desktop)

npx turbo -F @hypr/desktop tauri:dev

or

pnpm -F ui build && pnpm -F desktop tauri dev

Web (apps/web)

pnpm -F web dev

API (apps/api)

pnpm -F api dev

Supabase

Reference: https://supabase.com/docs/guides/local-development/cli/getting-started

task supabase-start
task supabase-stop
  • task supabase-start will modify apps/api/.env and apps/web/.env based on the output of supabase start.
  • We generate supabase/config.toml dynamically based on the environment variables, and it is gitignored.
  • Currently, GITHUB_CLIENT_SECRET and GITHUB_CLIENT_ID is supported to enable GitHub OAuth.
  • It is important to set <SUPABASE_URL>/auth/v1/callback as redirect URI in your OAuth application settings.

Stripe

Stripe CLI: https://docs.stripe.com/stripe-cli/install

task stripe
  • task stripe will modify apps/api/.env based on the output of stripe listen.

Next Steps

  • See Extensions to learn how to build custom extensions
  • Check out the Company Handbook to understand our values and how we work
  • Visit our GitHub for the full codebase

Clone this wiki locally