Thanks for your interest in contributing! This document explains how to set up the project locally, the branch and PR workflow, and basic code style expectations.
- Fork the repo and clone your fork locally.
git clone https://github.com/yourusername/achievement-management-system.git
cd achievement-management-system
# Create virtual environment
python -m venv venv
# Activate virtual environment
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Initialize database
python init_db.py
# Run application
python app.py- Open http://localhost:5000 to verify the app runs.
- Work from feature branches:
feature/short-descriptionorfix/short-description. - Keep
mainprotected and up-to-date. Open a pull request againstmainwhen ready. - Provide a clear PR description and link any related issue(s).
Example branch names:
feature/add-achievement-analyticsfix/login-validation-errordocs/update-readme
Use Conventional Commits style where convenient, for example:
feat: add filtering by achievement typefix: correct student search autocompletedocs: update installation instructionschore: update Flask dependenciesrefactor: improve database query performance
- Follow PEP 8 style guide
- Use meaningful variable and function names
- Add docstrings for functions and classes
- Use type hints where applicable
def get_student_achievements(student_id: str) -> list:
"""
Retrieve all achievements for a given student.
Args:
student_id: The unique identifier for the student
Returns:
List of achievement dictionaries
"""
pass- Use
constandletinstead ofvar - Use camelCase for variables and functions
- Add comments for complex logic
- Keep functions small and focused
function validateAchievementForm(formData) {
// Add validation logic here
return isValid;
}- Use semantic HTML5 elements
- Follow BEM naming convention for CSS classes
- Keep styles modular and reusable
If you're modifying the database schema:
- Document the changes in the PR description
- Create a migration script if needed
- Update the ER diagram documentation
- Test on a fresh database before submitting
Example:
# migrations/add_achievement_level.py
def upgrade():
cursor.execute('''
ALTER TABLE achievements
ADD COLUMN achievement_level TEXT
''')If tests are present, run them locally before requesting review:
python -m pytestIf there are no tests yet, open an issue proposing tests and we can add basic coverage.
- Small fixes: Open a PR directly with a clear description
- New features: Open an issue first to discuss the change
- Breaking changes: Always discuss in an issue before starting
Open an issue with:
- Clear description of the bug
- Steps to reproduce
- Expected vs actual behavior
- Python version, OS, browser (if UI-related)
- Any error messages or logs
Example bug report:
**Bug**: Student search returns no results
**Steps to reproduce**:
1. Login as teacher
2. Go to "Add Achievement"
3. Type student ID in search field
4. No results appear
**Environment**:
- Python 3.9.7
- Windows 10
- Chrome 120
**Error logs**:
[Paste any console errors here]
Looking for ideas? Check these areas:
- Optimize database queries
- Add data validation
- Improve error handling
- Add API endpoints for mobile app
- Enhance UI/UX design
- Improve mobile responsiveness
- Add loading indicators
- Implement better form validation
- Improve setup guides
- Add code comments
- Create video tutorials
- Write API documentation
- Achievement analytics dashboard
- Email notifications
- Export achievements as PDF
- Multi-language support
- Dark mode improvements
Please be respectful and constructive in all interactions. We welcome contributors of all skill levels and backgrounds.
Expected behavior:
- Be kind and patient
- Give constructive feedback
- Focus on what's best for the project
- Show empathy to other contributors
Unacceptable behavior:
- Harassment or discrimination
- Trolling or insulting comments
- Publishing others' private information
- Any conduct that creates an uncomfortable environment
- Create an issue with the
questionlabel - Check existing issues and discussions
- Reach out to maintainers directly
Thank you for contributing to Achievement Management System! 🎉