Onboarding
Welcome to Songbird! This guide will help you get up and running as a new contributor.Architecture
Songbird is pure Rust + React/TypeScript on Tauri v2 — there is no C++ or JUCE; that migration is complete. The Rust backend lives inrust/ (a Cargo workspace) and the React frontend in react_ui/.
Setup
Follow the instructions ininstall.md at the repo root. It covers prerequisites, submodule init, patching, building, and verification — and works with LLM coding agents out of the box.
Project Structure Overview
Rust Crate Map
Therust/crates/ directory contains:
Key Concepts to Learn
- Linear Automation — How work flows through the Linear board: moving a card between columns drives an automated agent action (planning, review, execution, merge). Read this before picking up your first ticket.
.birdnotation — The text-based music format at the heart of Songbird. Understand this first.- Sync Engine — How React, Rust, and Git stay in sync.
- Collaboration — Git-based collaboration with real-time multiplayer cursors (WIP).
- Tauri IPC — The React UI communicates with the Rust backend via Tauri’s typed IPC commands. Each command returns
IpcResult<T>. - Real-time audio — The engine uses a lock-free, zero-allocation audio callback with pre-allocated buffers and
SpscRingBufferfor UI communication.
Branches
All new work should branch off
rust.
The Tree of Code
Not all code carries the same risk. Think of the codebase as a tree — the closer to the roots, the more caution is required. Roots — Core foundation. Breaking these breaks everything.- Examples: App shell, install scripts, base of the audio engine, sync engine.
- Discuss changes in advance, overcommunicate, heavy test coverage, code review, QA thoroughly.
- Examples: Tracks, plugin hosting, playback, frequently used components, UI theme.
- Overcommunicate, heavy test coverage, code review, QA thoroughly.
- Examples: Export options, CLI tool, niche plugin UIs.
- Test coverage, use best judgement about code review, QA.
- Examples: Tooltips, cosmetic tweaks, docs, one-off scripts.
- Let the LLMs go wild and have fun :)
Development Workflow
- Branch off
rustin Devin/Antigravity/Claude Code (or any other tool). - Write tests first — define success conditions before implementation.
- Implement against those tests.
- QA features and core functionality (e.g., don’t break playback while moving fast).
- Commit and submit a PR targeting
rust. - Request human review (reviewers may use agents).
Useful Commands
Next Steps
- Read the Introduction for an architecture overview.
- Explore the React UI docs for frontend details.
- Check the Roadmap to see what’s in progress.
- Look at the Keyboard Shortcuts to navigate the app efficiently.
- Read
rust/ARCHITECTURE.mdfor a detailed reference of the Rust engine internals.