Contributing to Sequent Voting Platform
Thank you for your interest in contributing to the Sequent Voting Platform! This guide will help you get started with contributing to our open-source project.
Ways to Contribute
There are many ways to contribute to Sequent:
- Report bugs - Help us identify and fix issues
- Suggest features - Share ideas for improvements
- Improve documentation - Help make our docs clearer and more comprehensive
- Submit code - Fix bugs or implement new features
- Review pull requests - Help review contributions from other developers
- Answer questions - Help other users in our Discord community
Getting Started
Prerequisites
Before contributing, make sure you have:
- A GitHub account
- Git installed on your local machine
- Docker installed for running the development environment
- Basic knowledge of the technologies we use (see System Architecture) docs/docusaurus/docs/0
Development Environment Setup
The fastest way to start developing is using VS Code Dev Containers or GitHub Codespaces:
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/step.git
cd step - Open in VS Code with the Dev Containers extension installed
- The environment will automatically set up all dependencies
For detailed setup instructions, see the GraphQL API Documentation.
Development Workflow
-
Create a branch for your work:
git checkout -b feature/your-feature-name -
Make your changes following our coding standards
-
Test your changes thoroughly:
- Run existing tests
- Add new tests for new features
- Verify the documentation builds correctly
-
Commit your changes with clear, descriptive messages:
git add .
git commit -m "feat: add new feature description" -
Push to your fork:
git push origin feature/your-feature-name -
Open a Pull Request on GitHub
Coding Standards
General Guidelines
- Write clear, readable code with meaningful variable names
- Add comments for complex logic
- Keep functions small and focused
- Follow the existing code style in each part of the project
Language-Specific Standards
Rust
- Follow the Rust API Guidelines
- Run
cargo fmtbefore committing - Run
cargo clippyand address warnings - Add documentation comments for public APIs
TypeScript/JavaScript
- Use TypeScript for new frontend code
- Follow the ESLint configuration
- Run
yarn prettify:fixbefore committing - Use functional components and hooks in React
Documentation
- Write in clear, concise English
- Include code examples where appropriate
- Update the documentation when changing functionality
- Check for broken links before submitting
Commit Message Convention
We follow the Conventional Commits specification:
feat:- A new featurefix:- A bug fixdocs:- Documentation only changesstyle:- Code style changes (formatting, missing semicolons, etc.)refactor:- Code changes that neither fix bugs nor add featuresperf:- Performance improvementstest:- Adding or updating testschore:- Changes to build process or auxiliary tools
Example:
feat: add ballot verification to voting portal
This commit adds the ability for voters to verify their ballot
through the voting portal interface.
Contributor License Agreement (CLA)
Before we can accept your contribution, you must sign the Sequent Contributor License Agreement (CLA). This is a one-time requirement that ensures:
- You have the legal right to contribute the code
- Sequent can use and distribute your contributions
- The project remains open source under the AGPL-3.0 license
- Contributors are properly credited and protected
How It Works
- When you submit your first pull request, the CLA Assistant bot will automatically comment on your PR
- Review the full CLA document
- Sign by commenting on your PR with:
I have read the CLA Document and I hereby sign the CLA - The bot will record your signature and update your PR status
- You only need to sign once - all future contributions are covered
The CLA signing process is quick and straightforward. If you have any questions about the CLA, please reach out on our Discord community or comment on your pull request.
Pull Request Process
-
Ensure your PR:
- Has a clear title and description
- References any related issues (e.g., "Fixes #123")
- Includes tests for new functionality
- Updates documentation as needed
- Passes all CI checks
- Has a signed CLA (for first-time contributors)
-
PR Review:
- At least one maintainer review is required
- Address review comments promptly
- Be open to feedback and discussion
-
After Approval:
- Maintainers will merge your PR
- Your contribution will be included in the next release
Testing
Running Tests
For Rust packages:
cd packages/
cargo test
For frontend packages:
cd packages/
yarn test
Writing Tests
- Write unit tests for new functions and modules
- Write integration tests for API endpoints
- Write end-to-end tests for critical user flows
- Aim for good test coverage, especially for critical code paths
Documentation
When contributing documentation:
-
Preview your changes:
cd docs/docusaurus
npm start -
Check for broken links:
npm run build -
Follow the documentation structure in the
docs/folder
License
By contributing to Sequent Voting Platform, you agree that your contributions will be licensed under the AGPL-3.0-only license. Make sure all new files include the appropriate SPDX license header:
<!--
-- SPDX-FileCopyrightText: 2025 Sequent Tech Inc <legal@sequentech.io>
SPDX-License-Identifier: AGPL-3.0-only
-->
Code of Conduct
Our Pledge
We are committed to providing a welcoming and inclusive environment for all contributors, regardless of:
- Age, body size, disability, ethnicity, gender identity and expression
- Level of experience, education, socio-economic status
- Nationality, personal appearance, race, religion, or sexual identity and orientation
Our Standards
Positive behavior includes:
- Being respectful and considerate
- Accepting constructive criticism gracefully
- Focusing on what's best for the community
- Showing empathy towards other community members
Unacceptable behavior includes:
- Harassment, trolling, or insulting comments
- Personal or political attacks
- Publishing others' private information without permission
- Any conduct inappropriate in a professional setting
Enforcement
Instances of unacceptable behavior may be reported to the project maintainers. All complaints will be reviewed and investigated, resulting in a response deemed necessary and appropriate.
Getting Help
If you need help or have questions:
- Discord: Join our Discord community
- GitHub Issues: Check existing issues or create a new one
- Documentation: Browse our comprehensive documentation
Recognition
Contributors who make significant contributions will be:
- Listed in our project contributors
- Acknowledged in release notes
- Invited to participate in project discussions and decisions
Thank you for contributing to Sequent Voting Platform! Your efforts help make online voting more secure, transparent, and accessible for everyone.