Thank you for taking the time to contribute to our eVote System project! The following guidelines will help you understand how to contribute effectively and ensure our collaboration runs smoothly.
- Project Overview
- Getting Started
- Reporting Issues
- Branching Strategy
- Coding Guidelines
- Submitting a Pull Request
- Code Review Process
- Testing
- Communication
The eVote System is being developed to provide a secure, user-friendly, and scalable electronic voting platform. It aims to support elections in various contexts, ensuring transparency, privacy, and ease of use.
We welcome contributions that:
- Enhance security (e.g., authentication, encryption)
- Improve the user interface and user experience
- Add new features
- Fix bugs
- Improve performance or scalability
Before contributing, ensure you have the following installed:
- Git
- Python and Flask (if working on the backend)
- Frontend tools (e.g., html,css, Bootstrap5) if working on the frontend
- Docker (optional, for containerized deployment)
-
Fork the eVote System repository to your GitHub account.
-
Clone the forked repository to your local machine:
git clone https://https://github.com/KyucsaDevs/eVote.git
-
Navigate to the project directory:
cd eVote -
Set up the project dependencies:
pip install -r requirements.txt
If you encounter any bugs, security vulnerabilities, or want to request a feature:
- Check if an issue already exists in the Issues section.
- If not, create a new issue with:
- A clear, descriptive title
- Steps to reproduce the issue (if it's a bug)
- Expected vs actual behavior
- Relevant screenshots, logs, or error messages
We follow the Git Flow branching model:
main: This branch contains the production-ready code.develop: This branch contains the latest development code, and all new features should branch off from here.- Feature branches (
feature/your-feature-name): Used for developing new features or fixing bugs. - Bugfix branches (
bugfix/issue-number): Used to address specific bugs.
- Use lowercase and hyphens to separate words.
- Examples:
feature/user-authenticationbugfix/fix-issue-123
Please follow these coding standards to maintain consistency:
- Follow PEP 8 for Python code.
- Use meaningful variable names and comments.
- For database models, ensure field validation and constraints are enforced at both the model and database level.
- Avoid code duplication and ensure your code is DRY (Don't Repeat Yourself).
- Break large functions or components into smaller, manageable ones.
- Write unit tests for new features or changes.
Once your changes are complete:
-
Push your changes to your branch:
git push origin feature/your-feature-name -
Create a pull request (PR) on the repository's GitHub page.
-
Follow the PR template to provide:
- A clear description of what the PR addresses
- Screenshots or GIFs of the changes, if applicable
- A list of issues fixed (if any)
Ensure that:
- Your PR is up-to-date with the
developbranch. - All tests pass locally.
Once you submit a pull request:
- A project maintainer will review your code.
- You may be asked to make changes based on feedback.
- When approved, the PR will be merged into the
developbranch. - If you are a maintainer, ensure to wait for at least one review from another team member before merging.
Ensure that your code is fully tested. This includes:
- Unit tests for individual functions or components.
- Integration tests for ensuring components work together as expected.
- Running the full test suite before submitting a PR.
Use the following commands to run the project:
- Backend (Flask):
python run.py
For any questions or discussions:
- Use the project’s Slack channel for real-time communication.
- You can also reach out via the Discussions section on GitHub for general topics.
We appreciate your time and contributions in making the eVote System a success!