# 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 - [mkuran.pl/gtfs](https://mkuran.pl/gtfs/) - polish_trains.zip (PKP IC, PolRegio, etc.) - [Koleje Dolnośląskie GTFS](https://kolejedolnoslaskie.pl/rozklady-gtfs/) - oficjalne dane KD ## 📚 Dokumentacja - **[README.md](README.md)** - Ten plik, podstawowe informacje - **[QUICKSTART.md](QUICKSTART.md)** - Szybki start w 3 krokach - **[TECHNICAL.md](TECHNICAL.md)** - Dokumentacja techniczna i API - **[UV_GUIDE.md](UV_GUIDE.md)** - Przewodnik po uv (menedżer pakietów) - **[UV_CHEATSHEET.md](UV_CHEATSHEET.md)** - Ściągawka z komend uv ## Instalacja ### Wymagania: - Python 3.9+ - [uv](https://docs.astral.sh/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): ```bash # Linux/macOS curl -LsSf https://astral.sh/uv/install.sh | sh # Lub przez pip pip install uv ``` ### Szybka instalacja (Linux/macOS): ```bash ./setup.sh ``` ### Ręczna instalacja: ```bash # 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: ```bash uv sync uv run backend/app.py ``` ## Użycie ### Uruchomienie: **Szybki start:** ```bash ./run.sh ``` **Lub ręcznie:** ```bash 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: ```bash 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](https://docs.astral.sh/uv/) - szybki menedżer pakietów (10-100x szybszy niż pip!) > 💡 **Dlaczego uv?** Zobacz [UV_GUIDE.md](UV_GUIDE.md) aby dowiedzieć się więcej o uv i jak go używać.