VIBE-CODED! HERE BE DRAGONS - STAY VIGILANT!
Go to file
Maciej Bator 5dd9546163 adds missing pytz lib 2026-02-24 17:49:20 +01:00
backend adds missing pytz lib 2026-02-24 17:49:20 +01:00
examples initial commit 2026-02-24 17:40:04 +01:00
frontend initial commit 2026-02-24 17:40:04 +01:00
.gitignore initial commit 2026-02-24 17:40:04 +01:00
.python-version initial commit 2026-02-24 17:40:04 +01:00
QUICKSTART.md initial commit 2026-02-24 17:40:04 +01:00
README.md initial commit 2026-02-24 17:40:04 +01:00
TECHNICAL.md initial commit 2026-02-24 17:40:04 +01:00
UV_CHEATSHEET.md initial commit 2026-02-24 17:40:04 +01:00
UV_GUIDE.md initial commit 2026-02-24 17:40:04 +01:00
docker-compose.yml initial commit 2026-02-24 17:40:04 +01:00
nginx.conf initial commit 2026-02-24 17:40:04 +01:00
pyproject.toml initial commit 2026-02-24 17:40:04 +01:00
run.sh initial commit 2026-02-24 17:40:04 +01:00
setup.sh initial commit 2026-02-24 17:40:04 +01:00

README.md

Izochrona - Mapa izochron dla połączeń kolejowych w Polsce

Interaktywna mapa pokazująca izochrony (obszary dostępne w określonym czasie) dla połączeń kolejowych PKP Intercity i Kolei Dolnośląskich.

Funkcjonalności

  • Wyświetlanie izochron dla wybranej stacji początkowej
  • Obliczanie czasów podróży na podstawie rzeczywistych rozkładów jazdy
  • Interaktywna mapa z Leaflet
  • Obsługa danych GTFS od polskich przewoźników

Struktura projektu

backend/          - Serwer Python (Flask) i logika obliczania izochron
frontend/         - Mapa interaktywna (HTML + Leaflet)
data/            - Dane GTFS (nie wrzucane do repozytorium)

Źródła danych

📚 Dokumentacja

Instalacja

Wymagania:

  • Python 3.9+
  • uv - szybki menedżer pakietów Pythona
  • Przeglądarka internetowa (Chrome, Firefox, Safari)
  • ~500MB wolnego miejsca na dysku (dane GTFS)

Instalacja uv (jeśli nie masz):

# Linux/macOS
curl -LsSf https://astral.sh/uv/install.sh | sh

# Lub przez pip
pip install uv

Szybka instalacja (Linux/macOS):

./setup.sh

Ręczna instalacja:

# 1. Backend
cd backend
uv venv
uv pip install -r requirements.txt

# 2. Pobierz dane GTFS
uv run download_gtfs.py

# 3. Uruchom serwer
uv run app.py

Alternatywnie z pyproject.toml:

uv sync
uv run backend/app.py

Użycie

Uruchomienie:

Szybki start:

./run.sh

Lub ręcznie:

cd backend
source venv/bin/activate
python app.py

Następnie otwórz frontend/index.html w przeglądarce lub użyj prostego serwera HTTP:

cd frontend
python3 -m http.server 8000
# Otworz http://localhost:8000

Korzystanie z aplikacji:

  1. Wyszukaj stację - wpisz nazwę stacji w polu wyszukiwania (np. "Wrocław Główny")
  2. Wybierz przedziały czasowe - zaznacz checkboxy (30, 60, 90, 120 lub 180 minut)
  3. Kliknij "Oblicz izochrony" - poczekaj na wygenerowanie mapy
  4. Eksploruj wyniki - zobacz obszary dostępne w wybranym czasie!

API Endpoints:

Backend udostępnia REST API:

  • GET /api/health - status serwera
  • GET /api/stops - lista wszystkich przystanków
  • GET /api/stops/search?q=nazwa - wyszukiwanie przystanków
  • POST /api/isochrones - obliczanie izochron
  • POST /api/reachable - lista osiągalnych przystanków

Technologie

  • Backend: Python 3.9+, Flask, gtfs-kit, NetworkX, GeoPandas
  • Frontend: Leaflet, OpenStreetMap, vanilla JavaScript
  • Dane: GTFS (General Transit Feed Specification)
  • Narzędzia: uv - szybki menedżer pakietów (10-100x szybszy niż pip!)

💡 Dlaczego uv? Zobacz UV_GUIDE.md aby dowiedzieć się więcej o uv i jak go używać.