NoteGenNOTEGEN.

Contributing

Set up NoteGen, understand the repository, and submit a maintainable pull request.

NoteGen is an open-source community project. Before fixing or building a feature, search Issues and Discussions. Open an Issue first for larger behavior changes.

Stack

  • Tauri 2 for Windows, macOS, Linux, Android, iOS, and native capabilities;
  • Next.js 15, React 19, and TypeScript;
  • Tiptap 3 Markdown editor;
  • Zustand, SQLite, and Tauri Store;
  • Tailwind CSS 4 and shadcn/ui;
  • OpenAI-compatible models, RAG, MCP, Skills, and local OCR.

Set up

Complete the Tauri 2 prerequisites and install Node.js and pnpm.

git clone https://github.com/your-username/note-gen.git
cd note-gen
git switch dev
pnpm install
pnpm tauri dev

The frontend runs at http://localhost:3456. For a blank window, inspect terminal and developer-tool errors before reloading.

Repository structure

src/
├── app/core/             Desktop UI, editor, records, chat, and settings
├── app/mobile/           Mobile record, writing, chat, and settings
├── components/           Shared and shadcn/ui components
├── config/               Shortcuts, sync exclusions, and configuration
├── db/                   SQLite access
├── hooks/                React hooks
├── i18n/                 Internationalization runtime
├── lib/                  AI, Agent, MCP, Skills, sync, OCR, and core logic
├── stores/               Zustand stores
└── types/                Shared types
src-tauri/                Rust commands, platform features, capabilities, packaging
messages/                 Interface translations
.github/workflows/        Release automation

Common commands

pnpm dev                  # Next.js only
pnpm tauri dev            # Desktop application
pnpm build                # Static frontend export
pnpm tauri build          # Current desktop platform package
pnpm tauri android dev    # Android development
pnpm tauri android build  # Android build
pnpm tauri ios dev        # iOS development (macOS/Xcode required)
pnpm tauri ios build      # iOS build
pnpm sync-version         # Sync Tauri version into the iOS project

Some modules use Node's built-in test runner or colocated specifications. Search for nearby *.test.*, *.spec.*, and scripts, then run the relevant checks.

Development conventions

  • Branch from dev using fix/... or feat/...; do not develop directly on dev.
  • Client components need 'use client'; keep TypeScript strict.
  • When adding interface copy, add the same keys to every language file under messages/.
  • Update the website docs when changing models, sync, privacy, or user workflows.
  • Never commit API keys, tokens, signing files, personal paths, or real user data.

Pull requests

Use fix(#issue): description or feat(#issue): description. Explain the problem, solution, affected platforms, validation, and UI screenshots. Run the relevant build, type checks, or tests first.

Development happens on dev. Pushing release triggers GitHub Actions to build and publish desktop and Android artifacts. Do not change release versions or signing configuration in an ordinary feature PR unless explicitly required.

Mobile

Android and iOS require their own Tauri, SDK, signing, and device setup. Never commit local signing keys or keystore.properties. Mobile does not support every desktop feature, including stdio MCP and the system tray, so check both desktop and mobile routes for new features.