First off, thank you for considering contributing to Flight Price Monitor! 🎉
It's people like you that make this project better for everyone who wants to save money on flights.
If you find a bug, please open an issue with:
- Clear title describing the issue
- Steps to reproduce the bug
- Expected vs actual behavior
- Screenshots if applicable
- Environment (OS, Python version, etc.)
Have an idea? Open an issue with:
- Clear description of the feature
- Use case - why is this needed?
- Mockups or examples if applicable
Documentation improvements are always welcome:
- Fix typos or unclear explanations
- Add examples
- Translate to other languages
- Add screenshots or diagrams
Want to fix a bug or add a feature? Great!
# Install dependencies
sudo apt-get install libxml2-dev libxslt-dev python3-dev build-essential
# Install Python packages
pip3 install -r requirements_raspberry.txt# 1. Fork the repository on GitHub
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/flight-price-monitor.git
cd flight-price-monitor
# 3. Add upstream remote
git remote add upstream https://github.com/ORIGINAL_OWNER/flight-price-monitor.git# Create a feature branch
git checkout -b feature/your-feature-name
# Or for bug fixes
git checkout -b fix/bug-description- Follow PEP 8 style guide
- Use meaningful variable names
- Add docstrings to functions
- Keep functions small and focused
- Add comments for complex logic
Example:
def search_flights_for_country(country, origin, destination, departure_date, return_date):
"""
Search flights for a specific country using VPN.
Args:
country (str): Country code (e.g., 'brazil', 'portugal')
origin (str): Origin airport code (e.g., 'GRU')
destination (str): Destination airport code (e.g., 'LIS')
departure_date (str): Departure date (YYYY-MM-DD)
return_date (str): Return date (YYYY-MM-DD) or None
Returns:
list: List of flight results with prices and details
"""
# Implementation
pass- Use
#!/bin/bashshebang - Add
set -efor error handling - Comment complex sections
- Use meaningful variable names
- Use semantic HTML5
- Keep CSS organized
- Use modern JavaScript (ES6+)
- Add comments for complex logic
# 1. Run the application
python3 app_v3_COMPLETO.py
# 2. Access in browser
# http://localhost:8776
# 3. Test your changes:
# - Make a search
# - Check logs
# - Verify results
# - Test on different screen sizes (mobile, tablet, desktop)# Check Python syntax
python3 -m py_compile app_v3_COMPLETO.py
# Check for common issues (if you have pylint)
pylint app_v3_COMPLETO.pyUse conventional commits format:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, no logic change)refactor: Code refactoringperf: Performance improvementstest: Adding testschore: Maintenance tasks
Examples:
git commit -m "feat(scraper): add Momondo support"
git commit -m "fix(vpn): handle connection timeout properly"
git commit -m "docs(readme): add installation troubleshooting section"
git commit -m "style(ui): improve mobile responsive layout"Make small, focused commits:
- ✅ One logical change per commit
- ✅ Commit messages explain "why"
- ❌ Avoid huge commits with multiple changes
- ✅ Test your changes thoroughly
- ✅ Update documentation if needed
- ✅ Update README if adding new features
- ✅ Ensure no credentials are in the code
- ✅ Make sure code follows style guidelines
# 1. Push your branch
git push origin feature/your-feature-name
# 2. Go to GitHub and click "New Pull Request"
# 3. Fill in the template (see below)
# 4. Wait for review## Description
Brief description of what this PR does.
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Performance improvement
## Testing
How did you test this?
## Screenshots (if applicable)
Add screenshots here
## Checklist
- [ ] Code follows style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No credentials in code
- [ ] Tested manually- Maintainer reviews your code
- Feedback may be requested
- Make changes if needed
- Once approved, maintainer merges
Be patient! Reviews may take a few days.
Looking for ideas? Here are areas that need work:
- Improve scraper success rate (anti-bot bypass)
- Add more travel sites (Expedia, Booking.com)
- Better error handling and user feedback
- Add unit tests
- Improve mobile interface
- Email notifications when prices drop
- Price history tracking and graphs
- More countries (target: 30+)
- Support for hotels and car rentals
- Dark mode
- Telegram bot integration
- Mobile app (React Native)
- ML price prediction
- API for third-party integration
- Multi-language support
- 💬 Open a Discussion
- 🐛 Open an Issue
- 📧 Email: your-email@example.com
Be respectful, constructive, and professional:
- ✅ Be welcoming to newcomers
- ✅ Give constructive feedback
- ✅ Focus on the issue, not the person
- ❌ No harassment or offensive language
- ❌ No spam or trolling
Don't worry! Everyone was new once. Here's a beginner-friendly workflow:
# 1. Fork the project on GitHub (click "Fork" button)
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/flight-price-monitor.git
# 3. Create a branch for your fix
git checkout -b fix/my-first-fix
# 4. Make your changes (start small!)
# Example: fix a typo in README
# 5. Commit
git add README.md
git commit -m "docs: fix typo in installation section"
# 6. Push
git push origin fix/my-first-fix
# 7. Open Pull Request on GitHub
# Go to your fork and click "New Pull Request"
# 8. Wait for review and respond to feedbackTips for first-time contributors:
- Start with documentation fixes or small bugs
- Ask questions if you're stuck
- Don't be afraid to make mistakes
- Learn from feedback
Contributors are awesome! We recognize contributions in:
- README contributors section
- Release notes
- GitHub Insights
By contributing, you agree that your contributions will be licensed under the MIT License.
Your contributions make Flight Price Monitor better for everyone!
Happy coding! 🚀
Questions? Open an issue or discussion - we're here to help!