Thank you for your interest in contributing to the Aleo Dev Toolkit! This document provides guidelines and instructions for contributing to this project.
- Code of Conduct
- Getting Started
- Development Setup
- Project Structure
- Development Workflow
- Code Style and Standards
- Testing
- Submitting Changes
- Release Process
- Questions and Support
We are committed to providing a welcoming and inclusive environment for all contributors. Please be respectful, considerate, and constructive in all interactions.
- Node.js >= 18.0.0
- pnpm >= 10.0.0
- Git
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/aleo-dev-toolkit.git cd aleo-dev-toolkit - Add the upstream remote:
git remote add upstream https://github.com/ProvableHQ/aleo-dev-toolkit.git
pnpm installBuild all packages:
pnpm buildTo see the toolkit in action, you can run the example applications:
# Run both examples simultaneously
pnpm examples:dev
# Or run individually
pnpm adapter-app:dev # Wallet adapter example
pnpm hooks-app:dev # Hooks exampleTo work on a specific package with watch mode:
cd packages/aleo-wallet-adaptor/core
pnpm devThis is a monorepo managed with pnpm workspaces and Turborepo.
aleo-dev-toolkit/
├── packages/ # All packages
│ ├── aleo-types/ # Common Aleo types
│ ├── aleo-hooks/ # React hooks for chain data
│ ├── aleo-wallet-standard/ # Wallet standard interfaces & types
│ └── aleo-wallet-adaptor/ # Wallet adapter package
│ ├── core/ # Core adapter logic
│ ├── react/ # React integration
│ ├── react-ui/ # UI components
│ └── wallets/ # Wallet implementations
│ ├── leo/
│ ├── puzzle/
│ ├── shield/
│ ├── fox/
│ └── soter/
├── examples/ # Example applications
├── docs/ # Documentation
└── .changeset/ # Changeset configuration
For more details, see the README.md.
Create a new branch from master:
git checkout master
git pull upstream master
git checkout -b feature/your-feature-nameUse descriptive branch names:
feature/add-new-wallet- New featuresfix/wallet-connection-bug- Bug fixesdocs/update-readme- Documentation updatesrefactor/improve-error-handling- Refactoring
- Write clean, maintainable code
- Follow the existing code style
- Add comments for complex logic
- Update documentation as needed
- Add tests for new functionality
Before submitting, ensure:
# Build all packages
pnpm build
# Run linters
pnpm lint
# Run tests (if available)
pnpm test
# Format code
pnpm formatWrite clear, descriptive commit messages:
feat: add support for new wallet adapter
- Implement connection logic
- Add error handling
- Update documentation
Follow Conventional Commits format:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
- Use TypeScript for all new code
- Enable strict mode
- Prefer explicit types over
any - Use interfaces for object shapes
- Follow existing patterns in the codebase
We use Prettier for code formatting:
pnpm formatPrettier will automatically format all TypeScript, TypeScript React, and Markdown files.
We use ESLint for code linting:
pnpm lint- Keep files focused and single-purpose
- Use meaningful variable and function names
- Group related functionality together
- Export only what's necessary from modules
- Add JSDoc comments for public APIs
- Update README files when adding features
- Include code examples in documentation
- Keep inline comments concise and meaningful
While comprehensive test coverage is a goal, currently the project focuses on manual testing through examples. When adding new features:
- Test manually using the example applications
- Verify edge cases and error handling
- Test across different wallet implementations
- Ensure backward compatibility
If you add tests, place them in a __tests__ or test directory within the package.
This project uses Changesets for version management. When your changes affect a published package, create a changeset:
pnpm changesetThis will:
- Prompt you to select which packages changed
- Ask for the type of change (major, minor, patch)
- Request a description of the changes
A changeset file will be created in .changeset/. Commit this file with your changes.
git push origin feature/your-feature-name- Go to the repository on GitHub
- Click "New Pull Request"
- Select your branch
- Fill out the PR template:
- Description: What changes does this PR make and why?
- Type: Feature, Bug Fix, Documentation, etc.
- Testing: How was this tested?
- Checklist: Ensure all items are completed
- Maintainers will review your PR
- Address any feedback or requested changes
- Keep your branch up to date with
master:git checkout master git pull upstream master git checkout feature/your-feature-name git rebase master
Once approved, a maintainer will merge your PR. Thank you for contributing!
Releases are managed by maintainers using Changesets. For details on the release process, see docs/release-guide.md.
Note: Only maintainers can publish packages to npm. Contributors should focus on code changes and creating changesets.
- Issues: Open an issue on GitHub for bugs or feature requests
- Discussions: Use GitHub Discussions for questions and general discussion
- Documentation: Check the README files in individual packages
We welcome contributions in many areas:
- New Wallet Adapters: Implement adapters for additional Aleo wallets
- Bug Fixes: Fix issues reported in GitHub Issues
- Documentation: Improve README files, add examples, write guides
- Type Definitions: Enhance TypeScript types and interfaces
- Examples: Create new example applications
- Performance: Optimize existing code
- Testing: Add test coverage
- UI Components: Enhance or create new React UI components
By contributing to this project, you agree that your contributions will be licensed under the same license as the project (GPL-3.0-or-later). See LICENSE for details.
Thank you for contributing to the Aleo Dev Toolkit! 🎉