This guide provides detailed information for developers working on or contributing to the Route Planner project.
🚀 For End Users: If you just want to use Route Planner, download the pre-built executable from GitHub Releases - no development setup needed!
Note: All Windows executables and cross-platform packages are automatically built and published using GitHub Actions CI/CD.
- Python 3.8 or higher
- Git
- (Windows only) Visual Studio Build Tools with C++ support
-
Clone the repository
git clone https://github.com/yammanhammad/Route_Planner.git cd Route_Planner -
Set up environment
# Create virtual environment python -m venv .venv # Activate environment # On Windows: .venv\Scripts\activate # On Linux/macOS: source .venv/bin/activate # Install dependencies pip install -r requirements.txt pip install -e .
-
Verify setup
python main.py --dev
The application should start in development mode.
Route_Planner/
├── main.py # Application entry point
├── config.py # Configuration settings
├── requirements.txt # Python dependencies
├── route_planner.py # Cross-platform launcher
├── route_planner/ # Main application package
│ ├── __init__.py # Package initialization
│ ├── core.py # Entry point (calls app.py main)
│ ├── app.py # Core application with UI
│ ├── algorithms/ # Routing algorithms
│ ├── ui/ # User interface components
│ └── utils/ # Utility functions
├── scripts/ # Utility scripts
├── docs/ # Documentation
└── cache/ # Runtime cache
main- stable production codedevelop- integration branch for featuresfeature/xxx- feature branchesfix/xxx- bug fix branchesrelease/x.x.x- release preparation
- Use present tense ("Add feature" not "Added feature")
- First line should be 50 characters or less
- Reference issues in commit message body
- Include details about why a change is needed
- Create a branch from
develop - Implement your changes
- Update documentation if necessary
- Submit a pull request to
develop - Wait for code review
- Make requested changes
- Merge after approval
Since this project currently doesn't have formal unit tests, ensure manual testing covers:
- Application startup and GUI loading
- Route optimization functionality
- Map display and interaction
- Configuration loading
- Cross-platform compatibility
Windows executables are built automatically by GitHub Actions CI/CD:
-
A workflow is triggered when:
- A new release is created
- A tag with pattern 'v*' is pushed
- Manually triggered from GitHub
-
The workflow uses:
scripts/windows_build.spec- PyInstaller configurationscripts/runtime_hook_vcruntime.py- Runtime hooksscripts/installer.nsi- NSIS installer script
For other platforms, you can build packages using:
# Install build dependencies
pip install build wheel
# Build distribution packages
python -m build
# Install locally for testing
pip install -e .README.md- Project overview and quick startDEVELOPMENT.md- This developer guidedocs/- Detailed documentationRELEASE_NOTES.md- Version historyWINDOWS_GUIDE.md- Windows-specific guideCONTRIBUTING.md- Contribution guidelines
- Use Markdown for all documentation
- Include code examples where appropriate
- Keep documentation up-to-date with code changes
- Use headings and lists for readability
- Include images or diagrams when helpful
The project uses GitHub Actions for CI/CD:
-
test.yml - Runs on every pull request and push to main/develop
- Runs tests on multiple Python versions
- Generates code coverage report
- Validates code style
-
build.yml - Runs on release creation
- Builds Windows executables
- Creates distribution packages
- Uploads assets to GitHub Releases
-
Update version number in:
config.pyroute_planner/__init__.pysetup.py
-
Update
docs/RELEASE_NOTES.mdwith changes -
Create a release branch:
git checkout -b release/x.x.x
-
Create pull request to
main -
After merge, tag the release:
git tag -a vx.x.x -m "Version x.x.x" git push origin vx.x.x -
Create a GitHub Release with release notes
- UI Layer - PyQt5-based interface with WebEngine
- Algorithm Layer - Route optimization algorithms
- Data Layer - Caching and persistence
- API Layer - External service integration
- Model-View-Controller - For UI separation
- Worker Threads - For background processing
- Factory Pattern - For algorithm selection
- Singleton - For configuration and logging
- Issue Tracker: GitHub Issues
- Discussions: GitHub Discussions
- Contributing: See CONTRIBUTING.md