Thank you for your interest in contributing! This document provides guidelines for contributing to the AnonVote monorepo.
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/core.git - Create a feature branch:
git checkout -b feature/your-feature - Set up the project:
pnpm install
core/
├── apps/
│ ├── backend/ # Express backend API
│ └── frontend/ # React frontend application
├── packages/
│ ├── crypto/ # @anonvote/crypto package
│ └── contracts/ # Soroban smart contracts + TypeScript service
├── docs/ # Documentation
└── .github/workflows/ # CI/CD workflows
-
Create a feature branch from
develop:git checkout -b feature/your-feature develop
-
Make your changes and commit:
git commit -m "feat: description of your change" -
Follow the commit message convention:
feat:for new featuresfix:for bug fixesdocs:for documentationtest:for testschore:for maintenance
Run tests locally before pushing:
pnpm run test
pnpm run lintFor package-specific tests:
pnpm run test --filter=crypto
pnpm run test --filter=backendpnpm run build # Build all packages
pnpm run build --filter=crypto
pnpm run dev # Run dev servers- Push your branch to your fork
- Create a Pull Request against
developbranch - Provide a clear description of your changes
- Link related issues (if any)
- Wait for CI/CD checks to pass
- Address any review comments
- Once approved, maintainers will merge
- Use TypeScript for new code
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
- Ensure linting passes:
pnpm run lint
- FIPS 140-2 compliance required for cryptographic changes
- Integration tests:
pnpm run test:integration --filter=crypto - Examples:
pnpm run test:examples --filter=crypto
- Rust contracts: Build with
cargo build --target wasm32v1-none --release - TypeScript service: Located in
packages/contracts/service/ - Test:
npm testin the service directory
- Express API server
- Run:
pnpm run dev:backend
- React application
- Run:
pnpm run dev:frontend
Our automated checks include:
- Linting (multiple Node versions)
- Unit tests (18.x, 20.x, 22.x)
- FIPS compliance validation
- Soroban contract WASM build
- Security audit
All checks must pass before merging.
- Check existing issues and PRs
- Read the documentation in
/docs - Open a discussion or issue for questions
By contributing, you agree that your contributions will be licensed under the same license as the project.