https://github.com/conjfrnk/zephyr
An adventurous run planner
https://github.com/conjfrnk/zephyr
aws aws-elastic-beanstalk flask google-oauth2 noaa-weather openstreetmap postgresql running strava-api
Last synced: about 1 year ago
JSON representation
An adventurous run planner
- Host: GitHub
- URL: https://github.com/conjfrnk/zephyr
- Owner: conjfrnk
- License: gpl-3.0
- Created: 2025-05-21T21:23:57.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-22T06:52:03.000Z (about 1 year ago)
- Last Synced: 2025-06-02T01:04:26.572Z (about 1 year ago)
- Topics: aws, aws-elastic-beanstalk, flask, google-oauth2, noaa-weather, openstreetmap, postgresql, running, strava-api
- Language: Python
- Homepage: https://zephyrmap.com
- Size: 114 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Zephyr
Zephyr is a Flask application for planning running routes that aim to cover every road within user specified ZIP codes. It leverages OpenStreetMap data through **osmnx** and **networkx** to build graphs and compute looped routes. Runs and user preferences are stored in a SQLite database created automatically in the project directory.
The web interface uses Leaflet maps and provides features to:
- Load road networks for one or more ZIP codes.
- Automatically generate loop routes from a chosen starting location with optional hill avoidance and basic weather checks.
- Mark planned runs as completed and track overall progress with mileage statistics.
## Running locally
Install the required packages and start the Flask server:
```bash
pip install -r requirements.txt
python app.py
```
Open `http://localhost:5000` in your browser. A local `zephyr.db` file will hold run history and preferences.
## Next steps
- Add Google OAuth2 authentication.
- Deploy to AWS Elastic Beanstalk using PostgreSQL instead of SQLite.
- Explore integration with the Strava API.
Zephyr is distributed under the terms of the GNU GPL v3, see `LICENSE` for details.