/postman-paths

Shortest path web app for community organizers. Live at: http://www.weavewalk.me

Primary LanguagePython

weave

helps community organizers improve canvassing outreach by generating optimized walking routes, guaranteed to take volunteers down every street, past every door, in an area.

Route Generator gets the shortest route to walk all roads in a drawn bbox.

Draw a polygon around the map area you'd like to cover. Weave then uses the Chinese Postman graph traversal algorithm to generate the shortest walking route that covers all roads within the given bounds. Then watch an animated walker traverse the calculated and save the route for later use by actual humans.

Collections organize saved routes.

(check out a full demo here)

Tech Stack

Python, NetworkX, OSMnx, Shapely, PostgreSQL, SQLAlchemy, Flask, JavaScript (AJAX, JSON), JQuery, Turf.js, Mapbox GL JS, Jinja, HTML, CSS

Getting Started

These instructions will get you a copy of the project up and running on your local machine with a sample database.

Prerequisites

python3.7
postgresql

Install dependencies

$ pip3 install -r requirements.txt

Run locally

1. (optional) Seed database with sample data.

$ python3 seed.py

2. Create sercrets.sh file in root directory.

3. Add export flask_session_key="<some secret key>" to secrets.sh Note: this is required to run the Flask server.

4. Connect secrets.sh.

$ source secrets.sh

5. Run server.

$ python3 server.py

Running the tests

Currently testing for the app is focused on unit tests for the backend graph constructor and circuit constructor scripts. Full test coverage is WIP.

Author

Paige Moody

Acknowledgments

Shoutout to all the awesome people of Hackbright for their support and guidance on this project!