Thank you for your interest in contributing to Ardo! This document provides guidelines and instructions for contributing.
By participating in this project, you agree to abide by our Code of Conduct.
- Node.js >= 22.0.0
- pnpm >= 9.0.0
# Clone the repository
git clone https://github.com/sebastian-software/ardo.git
cd ardo
# Install dependencies
pnpm install
# Build the package
pnpm build
# Start the docs dev server
pnpm docs:devardo/
├── packages/
│ └── ardo/ # Main package (published to npm)
│ ├── src/
│ │ ├── config/ # Configuration utilities
│ │ ├── markdown/ # Markdown processing pipeline
│ │ ├── runtime/ # React hooks and providers
│ │ ├── theme/ # UI components
│ │ ├── typedoc/ # TypeDoc integration
│ │ └── vite/ # Vite plugin
│ └── package.json
├── docs/ # Documentation site (dogfooding)
│ ├── content/ # Markdown content
│ └── src/ # Documentation app
└── package.json # Monorepo root
| Command | Description |
|---|---|
pnpm build |
Build all packages |
pnpm dev |
Start ardo package in dev mode |
pnpm docs:dev |
Start documentation dev server |
pnpm test |
Run tests |
pnpm test:watch |
Run tests in watch mode |
pnpm lint |
Run ESLint |
pnpm format |
Format code with Prettier |
pnpm typecheck |
Run TypeScript type checking |
# Run all tests
pnpm test
# Run tests in watch mode
pnpm test:watchUse descriptive branch names:
feat/feature-name— New featuresfix/bug-description— Bug fixesdocs/what-changed— Documentation changesrefactor/what-changed— Code refactoring
We use Conventional Commits for commit messages. This enables automatic changelog generation.
Format:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat— New featurefix— Bug fixdocs— Documentation changesstyle— Code style changes (formatting, semicolons, etc.)refactor— Code refactoringperf— Performance improvementstest— Adding or updating testschore— Maintenance tasks
Examples:
feat(markdown): add support for custom containers
fix(theme): correct dark mode toggle behavior
docs: update getting started guide
- We use Prettier for code formatting
- We use ESLint for linting
- TypeScript is required for all source code
- Run
pnpm formatbefore committing
Git hooks (via Husky) will automatically:
- Format staged files on commit
- Run type checking on push
- Fork the repository and create your branch from
main - Make your changes following the guidelines above
- Add tests if applicable
- Update documentation if needed
- Run the full test suite with
pnpm test - Ensure type checking passes with
pnpm typecheck - Submit a pull request with a clear description
Use the same format as commit messages:
feat(scope): add new feature
Include:
- What changes were made
- Why the changes were needed
- How to test the changes
- Screenshots (if UI changes)
When reporting bugs, please include:
- Ardo version
- Node.js version
- Operating system
- Steps to reproduce
- Expected vs actual behavior
- Error messages or screenshots
When requesting features, please include:
- Clear description of the feature
- Use case / motivation
- Possible implementation approach (optional)
- Open a GitHub Discussion for questions
- Check existing Issues for known problems
By contributing, you agree that your contributions will be licensed under the MIT License.