An open-source, cross-platform desktop application for designing, visualizing, and managing AudioReach audio processing graphs and use cases.
This project is currently in early development and is being open-sourced to provide transparency into our progress.
The application is not yet feature-complete or production-ready. We are actively developing core functionality and establishing the architectural foundation.
Current Status:
- ✅ Core architecture and design patterns established
- ✅ Monorepo structure with clean separation of concerns
- ✅ Feature-Sliced Design architecture implemented
- ✅ Visual graph designer foundation in place
- 🚧 Use case management features under active development
- 🚧 Device connectivity and real-time tuning in progress
- 📋 Comprehensive roadmap to be published
Contributions: We are not currently accepting external contributions. Contribution guidelines will be made available once we reach Milestone 1. See CONTRIBUTING.md for details.
- Overview
- Key Features
- Architecture
- Technology Stack
- Prerequisites
- Getting Started
- Backend Integration
- Project Structure
- Development
- Testing
- Documentation
- License
- Code of Conduct
AudioReach Creator UI is a modern desktop application built with Electron and React that provides a visual interface for designing and managing AudioReach audio processing graphs. It serves as the frontend companion to the AudioReach Creator API, enabling developers and audio engineers to create sophisticated audio processing pipelines through an intuitive graphical interface.
AudioReach is Qualcomm's next-generation audio framework that provides a flexible, modular approach to audio processing. This UI application enables users to work with AudioReach configurations visually, making it easier to design, test, and deploy audio processing solutions.
Learn More About AudioReach:
- AudioReach GitHub Organization - Explore the complete AudioReach ecosystem including engine, kernel drivers, and platform adaptations
- AudioReach Documentation - Comprehensive SDK overview, architecture details, and development workflow guides
- AudioReach Creator API - Backend REST API for managing AudioReach database files
The AudioReach Creator UI aims to provide:
- Visual Graph Designer: Intuitive drag-and-drop interface for building audio processing graphs
- Use Case Management: Create, edit, and organize audio use cases
- Real-Time Visualization: View and understand complex audio processing pipelines
- Device Connectivity: Connect to devices for real-time monitoring and parameter tuning
- Configuration Management: Manage module configurations and parameters
- Validation & Testing: Validate audio graphs and simulate use cases
- Cross-Platform Support: Run on Windows, Linux, and macOS
-
Electron + React Architecture
- Cross-platform desktop application
- Modern React 19 with TypeScript
- Type-safe IPC communication between main and renderer processes
-
Feature-Sliced Design
- Structured architecture for maintainability and scalability
- Clear separation of concerns across layers
- Modular and reusable components
-
Monorepo Structure
- Organized with pnpm workspaces
- Shared utilities and type definitions
- Independent package development and testing
-
Developer Experience
- Hot module reloading for rapid development
- Comprehensive TypeScript type checking
- ESLint and Prettier for code quality
- Playwright for end-to-end testing
- Complete visual graph designer with drag-and-drop
- Advanced use case management and organization
- Real-time device connectivity and monitoring
- Parameter tuning interface
- Graph validation and error reporting
- Use case simulation capabilities
- Export and import functionality
- Collaborative features
The React frontend is organized using Feature-Sliced Design architecture, which provides a structured approach to organizing code by its domain and purpose:
src/
├── entities/ # Business entities (projects, use cases, modules, etc.)
├── features/ # User interactions, processes, and features
├── widgets/ # Composite UI blocks combining entities and features
├── shared/ # Shared utilities, UI components, and libraries
└── pages/ # Application pages/screens (future)
- entities: Core business logic and data models for domain objects
- features: User interactions and business processes (configurators, visualizers, etc.)
- widgets: Composite UI blocks that combine entities and features (panels, workspaces)
- shared: Reusable components, utilities, API clients, and libraries
- pages: Application screens that compose widgets and features
This architecture promotes:
- Clear separation of concerns
- Better code organization and discoverability
- Improved maintainability and scalability
- Easier onboarding for new developers
- Testable and modular code
The project uses a monorepo structure with pnpm workspaces:
├── packages/
│ ├── api-utils/ # Shared types and utilities for IPC communication
│ ├── electron-app/ # Electron main process and preload scripts
│ ├── react-app/ # React frontend application
│ └── tsconfig/ # Shared TypeScript configurations
| Technology | Version | Purpose |
|---|---|---|
| Node.js | LTS | Runtime environment |
| TypeScript | 5.8.3 | Programming language |
| React | 19 | UI framework |
| Electron | 37+ | Desktop application framework |
| Vite | 7 | Frontend build tool |
| ESBuild | Latest | Electron bundling |
| Zustand | Latest | State management |
| QUI React | Latest | Qualcomm UI component library |
| Tailwind CSS | Latest | Utility-first CSS framework |
| pnpm | 10.26.0 | Package manager |
| Turbo | Latest | Monorepo build orchestration |
| Playwright | Latest | End-to-end testing |
| Jest | Latest | Unit testing framework |
| ESLint | 9.31.0 | Code linting |
| Prettier | 3.6.2 | Code formatting |
Before you begin, ensure you have the following installed:
We recommend using Corepack to install pnpm to ensure the correct version:
# Enable Corepack (included with Node.js ≥16.10)
corepack enable pnpm
# Corepack will automatically use the version specified in package.json# Clone the repository
git clone https://github.com/AudioReach/audioreach-creator-ui.git
cd audioreach-creator-ui
# Install dependencies
pnpm install
# Build all packages (required for first-time setup)
pnpm buildTo start the application in development mode with hot reloading:
# Start both React dev server and Electron app
pnpm devThis command:
- Starts the React development server with hot module reloading
- Builds and watches the Electron app
- Launches the Electron application connected to the React dev server
# Start only the React development server
pnpm dev:ui
# Start only the Electron app
pnpm dev:electron
# Run TypeScript type checking
pnpm typecheckTo build the application without creating distributable packages:
pnpm buildThis command:
- Cleans the output directories
- Builds the api-utils package
- Builds the React frontend
- Builds the Electron app
To create distributable packages:
pnpm bundleThis command:
- Builds all packages
- Packages the application using electron-builder
The bundled application will be available in the packages/electron-app/out directory, with builds for:
- Windows (x64)
- macOS
- Linux (x64)
Note: Binaries built for Windows need to be built on a Windows device.
AudioReach Creator UI communicates with the AudioReach Creator API backend server to manage AudioReach database files and perform audio graph operations.
-
Install and run the AudioReach Creator API:
# In a separate terminal, clone and start the backend git clone https://github.com/AudioReach/audioreach-creator-api.git cd audioreach-creator-api yarn install yarn build yarn start:dev
The API server will start on
http://localhost:3000by default. -
Configure the UI to connect to the backend:
The UI sends HTTP requests to the backend API running on localhost. Ensure the backend server is running before starting the UI application.
- The UI communicates with the backend via REST API calls
- All API requests are sent to the configured backend port (default: 3000)
- The backend handles file parsing, database operations, and graph management
- The UI provides the visual interface and user interactions
- Check HTTP Communication for call flow.
audioreach-creator-ui/
├── packages/
│ ├── api-utils/ # Shared types and utilities
│ │ ├── src/
│ │ │ ├── api.ts # API type definitions
│ │ │ ├── index.ts # Public exports
│ │ │ └── project-file-api.types.ts
│ │ └── package.json
│ │
│ ├── electron-app/ # Electron main process
│ │ ├── src/
│ │ │ ├── main.ts # Electron main process entry
│ │ │ ├── preload.ts # Preload script for IPC
│ │ │ └── project-file-api.ts
│ │ ├── installer/ # Installation scripts
│ │ ├── tests/ # E2E tests
│ │ └── package.json
│ │
│ ├── react-app/ # React frontend application
│ │ ├── src/
│ │ │ ├── entities/ # Business entities
│ │ │ │ ├── key-configurator/
│ │ │ │ ├── key-definitions/
│ │ │ │ ├── module-definitions/
│ │ │ │ ├── project/
│ │ │ │ └── usecases/
│ │ │ │
│ │ │ ├── features/ # User interactions and features
│ │ │ │ ├── device-list/
│ │ │ │ ├── device-operations/
│ │ │ │ ├── key-configurator/
│ │ │ │ ├── log-view/
│ │ │ │ ├── module-list/
│ │ │ │ ├── open-file/
│ │ │ │ ├── project-operations/
│ │ │ │ ├── recent-projects/
│ │ │ │ ├── subsystem-browser/
│ │ │ │ ├── usecase-selection/
│ │ │ │ ├── usecase-visualizer/
│ │ │ │ └── validation-result-view/
│ │ │ │
│ │ │ ├── widgets/ # Composite UI blocks
│ │ │ │ ├── configurator-panel/
│ │ │ │ ├── editor-shell/
│ │ │ │ ├── graph-designer/
│ │ │ │ ├── key-configurator-panel/
│ │ │ │ ├── properties-panel/
│ │ │ │ ├── session-workspace/
│ │ │ │ └── start-page/
│ │ │ │
│ │ │ ├── shared/ # Shared utilities and components
│ │ │ │ ├── api/ # API clients
│ │ │ │ ├── config/ # Configuration
│ │ │ │ ├── controls/ # Reusable UI controls
│ │ │ │ ├── layout/ # Layout components
│ │ │ │ ├── lib/ # Utility libraries
│ │ │ │ ├── providers/ # Context providers
│ │ │ │ ├── store/ # State management
│ │ │ │ ├── types/ # TypeScript types
│ │ │ │ └── utils/ # Utility functions
│ │ │ │
│ │ │ ├── main.tsx # Application entry point
│ │ │ └── index.css # Global styles
│ │ │
│ │ ├── tests/ # Unit and integration tests
│ │ └── package.json
│ │
│ └── tsconfig/ # Shared TypeScript configurations
│ ├── tsconfig.build-types.json
│ ├── tsconfig.strict.json
│ └── tsconfig.typedoc.json
│
├── docs/ # Documentation
│ ├── ArchitectureOverview.md
│ ├── api/
│ └── patterns/
│
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── package.json # Root package configuration
├── pnpm-workspace.yaml # pnpm workspace configuration
├── turbo.json # Turbo build configuration
└── tsconfig.json # Root TypeScript configuration
api-utils: Shared TypeScript types and utilities for IPC communication between Electron main and renderer processeselectron-app: Electron main process, preload scripts, and native desktop integrationreact-app: React frontend application with Feature-Sliced Design architecturetsconfig: Shared TypeScript configuration files for consistent type checking across packages
# Build all packages
pnpm build
# Build specific package
pnpm api-utils build
pnpm electron-app build
pnpm react-app build
# Start development server
pnpm dev # Start both React and Electron
pnpm dev:ui # Start only React dev server
pnpm dev:electron # Start only Electron app
# Run tests
pnpm test # Run all tests
pnpm test:ci # Run tests in CI mode
# Code quality
pnpm lint # Run ESLint
pnpm lint:fix # Fix linting issues
pnpm format # Format code with Prettier
pnpm format:check # Check code formatting
# Type checking
pnpm typecheck # Run TypeScript type checking
# Clean build artifacts
pnpm clean
# Create distributable packages
pnpm bundle # Build and package for distribution
pnpm release # Create release builds- Make Changes: Edit files in the appropriate package
- Build: Run
pnpm buildto compile TypeScript (or usepnpm devfor hot reloading) - Test: Run tests to verify changes
- Lint: Ensure code quality with
pnpm lint - Format: Format code with
pnpm format - Type Check: Verify types with
pnpm typecheck
The application uses a type-safe IPC communication system between the Electron main process and React renderer process:
api-utilspackage defines shared types and interfacespreload.tsexposes a secure API to the renderer process- TypeScript discriminated unions ensure type safety across processes
Example usage in renderer process:
// Send request to main process
const response = await window.api.send({
requestType: ApiRequest.OpenFile,
data: {filePath: '/path/to/file'},
});The application includes comprehensive testing with Playwright for end-to-end tests and Jest for unit tests.
# Run all tests
pnpm test
# Run tests for specific package
pnpm electron-app test
pnpm react-app test
# Run tests in CI mode
pnpm test:ci
# Run E2E tests with Playwright
pnpm electron-app test:e2e- E2E Tests: Located in
packages/electron-app/tests/- Test complete user workflows - Unit Tests: Located in
packages/react-app/tests/- Test individual components and functions - Integration Tests: Test interactions between components and features
Comprehensive documentation is available in the docs/ directory:
- Architecture Overview: Detailed architecture documentation
- API Documentation: API reference and integration guides
- Patterns: Design patterns and best practices
For backend API documentation, see the AudioReach Creator API repository.
This project is licensed under the BSD-3-Clause License. See the LICENSE file for details.
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please read CODE_OF_CONDUCT.md for details.
AudioReach Creator UI is built with modern software engineering practices and leverages the excellent work of the open-source community. Special thanks to the AudioReach team and all contributors to the technologies that make this project possible.