Building Voiden, together...
April 16, 2026 ยท View on GitHub
Thank you for your interest in helping us improve Voiden! This document provides guidelines and instructions for contributing.
Table of Contents
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Coding Guidelines
- Reporting Bugs
- Suggesting Enhancements
Code of Conduct
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to conduct@voiden.dev.
Getting Started
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/voiden.git - Add upstream remote:
git remote add upstream https://github.com/VoidenHQ/voiden.git - Create a new branch:
git checkout -b feature/your-feature-name
Development Setup
Prerequisites
- Node.js v22.x or latest LTS version
- Yarn 4 (via Corepack)
- TypeScript knowledge
Installation
# Ensure correct node version
nvm use
# Set yarn version
corepack enable
corepack use yarn@4.3.1
# Install dependencies
yarn install
Building
# Build core extensions
yarn workspace @voiden/core-extensions build
Running the App
# Start the Electron app (this also starts the UI dev server)
cd apps/electron && yarn start
Troubleshooting
If you encounter issues with dependencies or builds, use the cleanup script:
# First, provide permission to execute the script
chmod +x ./cleanup.sh
# Then, run:
./cleanup.sh
How to Contribute
Types of Contributions
We welcome various types of contributions:
- Bug fixes - Fix issues in existing code
- New features - Add new functionality to the app
- Documentation - Improve README, add examples, write guides (see Voiden Docs Repository)
- Tests - Add or improve test coverage
Before You Start
- Check if an issue already exists for what you want to work on
- For major changes, open an issue first to discuss your proposal
- For bug fixes, search existing issues or create a new one
- Comment on the issue to let others know you're working on it
Pull Request Process
-
Update your fork with the latest changes from upstream:
git fetch upstream git rebase upstream/beta -
Make your changes following the coding guidelines below
-
Test your changes:
yarn test yarn test:ui -
Commit your changes with clear, descriptive commit messages:
git commit -m "feat: add new API for custom panels"Follow Conventional Commits format:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changeschore:- Maintenance tasksrefactor:- Code refactoringtest:- Adding or updating tests
-
Push to your fork:
git push origin feature/your-feature-name -
Create a Pull Request from your fork to the main repository
-
Address review feedback - Be responsive to comments and requested changes
Pull Request Guidelines
- Keep PRs focused on a single feature or bug fix
- Include a clear description of what the PR does
- Reference any related issues (e.g., "Fixes #123")
- Update documentation if you're changing APIs
- Add examples if introducing new features
- Ensure all checks pass before requesting review
Branch Naming
- Features:
feature/[feature-name] - Bug Fixes:
bugfix/[bug-name]
Coding Guidelines
TypeScript Style
- Use TypeScript strict mode
- Provide explicit type annotations for public APIs
- Use interfaces for public types
- Document all public APIs with JSDoc comments
- Prefer
constoverlet, avoidvar - Use meaningful variable and function names
Code Organization
- Keep files focused on a single responsibility
- Export only what's necessary for the public API
- Group related functionality together
- Maintain consistent file structure
Documentation
- Add JSDoc comments to all public classes, methods, and types
- Include
@exampletags showing usage - Document parameters with
@paramand return values with@returns - Keep comments up-to-date when changing code
Reporting Bugs
When reporting bugs, please use our Bug Report Template and include:
- Description - Clear description of the bug
- Steps to reproduce - Minimal steps to reproduce the issue
- Expected behavior - What you expected to happen
- Actual behavior - What actually happened
- Environment - OS, Node.js version, Voiden version
- Code sample - Minimal reproducible example
- Screenshots - If applicable
Suggesting Enhancements
For feature requests, please use our Feature Request Template and include:
- Use case - Describe the problem you're trying to solve
- Proposed solution - Your suggested approach
- Alternatives - Other solutions you've considered
- Examples - Code examples showing how it would work
Testing
# Run all tests
yarn test
# Run UI tests
yarn test:ui
# Run UI tests with interactive UI
yarn workspace voiden-ui test:ui
Questions?
If you have questions:
- Check existing GitHub Issues
- Read the documentation
- Open a new issue with the "question" label
License
By contributing to this project, you agree that your contributions will be licensed under the Apache License 2.0, the same license as the project.