Skip to content

lefkovitzj/WDW-Wayfinder

Repository files navigation

Python FastAPI HTMX Docker


WDW Wayfinder

Live Demo »

WDW Wayfinder Demo

A FastAPI web app that computes optimized Walt Disney World transit itineraries using Dijkstra + Held-Karp TSP.
Explore the repo »

View Demo Flow · Report Bug · Request Feature


About The Project

WDW Wayfinder helps plan Disney transit routes between resorts, parks, and hubs.
It combines:

  • Mode-aware shortest paths (Dijkstra)
  • Optimal stop ordering (Held-Karp TSP)
  • Interactive graph visualization (vis-network)
  • Search-driven UX (HTMX + server-side templates)

Core implementation lives in:


Built With

Development Workflow

This project is one of my first attempts at partially using AI-assisted development while building an application.
AI tools such as GitHub Copilot were used to help brainstorm, prototype, and refactor parts of the code - especially the frontend design and JavaScript, with final design and validation decisions made manually.


Getting Started

Prerequisites

  • Python 3.11+
  • pip
  • (Optional) Docker Desktop

Installation (Local)

  1. Clone the repo

    git clone https://github.com/lefkovitzj/WDW-Wayfinder.git
    cd WDW-Wayfinder
  2. Create and activate a virtual environment

    python -m venv .venv
    # Windows
    .venv\Scripts\activate
    # macOS/Linux
    source .venv/bin/activate
  3. Install dependencies

    pip install -r requirements.txt
  4. Configure environment

    • Copy .env.example to .env
    • Ensure GRAPH_DATA_PATH points to your graph JSON (default: data/wdw_graph.json)
  5. (Optional) Regenerate graph data

    python data_converter.py
  6. Run the app

    python -m app.main

    Or:

    uvicorn app.main:app --reload

Run with Docker

Use:

docker compose up --build

Usage

  1. Open the app at http://127.0.0.1:8000
  2. Choose:
    • Starting point
    • Optional intermediate stops
    • Final destination
  3. Submit to receive:
    • Optimized stop order
    • Full stitched itinerary with transit modes
    • Estimated total travel time

Relevant UI templates:

Graph visualization:


Project Structure

WDW_Transit_Optimizer/
├── app/
│   ├── core/
│   │   ├── config.py              # Configuration & environment variables
│   │   └── graph.py               # Graph construction, Dijkstra, Held-Karp TSP
│   ├── static/
│   │   └── js/
│   │       └── graph.js           # Interactive vis-network graph rendering
│   ├── templates/
│   │   ├── base.html              # Base template with layout
│   │   ├── index.html             # Main search & results interface
│   │   ├── graph.html             # Graph visualization page
│   │   └── components/
│   │       ├── itinerary.html     # Rendered trip itinerary display
│   │       └── search_results.html # Search result snippets
│   ├── main.py                    # FastAPI app initialization
│   └── routes.py                  # API endpoints & request handlers
├── data/
│   └── wdw_graph.json             # Preprocessed graph data (nodes & edges)
├── data_converter.py              # Script to regenerate graph from source
├── Dockerfile                     # Container image definition
├── docker-compose.yml             # Multi-container orchestration
├── requirements.txt               # Python dependencies
├── .env.example                   # Environment variables template
└── README.md                      # Project documentation

Roadmap

  • Add automated tests for route-planning endpoints
  • Add graph validation checks in CI
  • Add transit-time profiles by day/time
  • Improve disconnected-node diagnostics in graph view

Contributing

Contributions are welcome.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/YourFeature)
  3. Commit your Changes (git commit -m "feat: add YourFeature")
  4. Push to the Branch (git push origin feature/YourFeature)
  5. Open a Pull Request

Contact

Joseph Lefkovitz
GitHub: @lefkovitzj
Project Link: https://github.com/lefkovitzj/WDW-Wayfinder

Disclaimer

This project is not affiliated with, authorized, or endorsed by The Walt Disney Company. All Disney-related names and trademarks are property of their respective owners.


Acknowledgments

  • Best-README-Template
  • Allears.net for articles on Disney transit options and approximate times
  • FastAPI + HTMX ecosystem

About

A web UI for planning resort hopping trips at Walt Disney World, based on estimated time data and known transit connections.

Topics

Resources

License

Stars

Watchers

Forks

Contributors