🧭 AKT MAMUT – Manual: EXPEDITIONS + CHALLENGES

Aktualna wersja workflow po przejściu na strukturę data + site.

📁 Struktura projektu

AKT-MAMUT
├─ data
│   ├─ backups
│   ├─ creds
│   ├─ gpx
│   ├─ geojson
│   │   └─ RAW
│   ├─ generate_geojson.py
│   └─ generate_challenges.py
│
└─ site
    ├─ assets
    ├─ challenges
    │   ├─ index.html
    │   └─ data
    ├─ expeditions
    │   ├─ index.html
    │   ├─ expeditions.js
    │   ├─ markers.js
    │   ├─ expeditions.geojson
    │   └─ markers.json
    ├─ manual
    ├─ pages
    └─ statistics
Zasada: data = generowanie i dane wejściowe, site = publikacja i lokalny podgląd / Netlify.

📱 Krok 1 – Locus Map

OneDrive/AKT-MAMUT/data/locus

🛠️ Krok 2 – GPX Track Editor

OneDrive/AKT-MAMUT/data/locus

🌍 Krok 3 – Wikiloc

OneDrive/AKT-MAMUT/data/gpx

📊 Krok 4 – Google Sheets: AKT Mamut Expeditions

⚙️ Krok 5 – Pipeline EXPEDITIONS

Uruchom:
update_map.bat
Pipeline wykonuje:
1. Pobranie danych z Google Sheets
2. Backup arkusza do CSV (tylko gdy arkusz się zmienił)
3. Audyt GPX vs Google Sheets
4. Generowanie brakujących RAW GeoJSON
5. Scalanie do expeditions.geojson
6. Generowanie markers.json
7. Kopiowanie plików do site/expeditions
8. git add w repo site
Powstają dwa pliki dla mapy: Lokalizacje:
data/geojson/expeditions.geojson
data/geojson/markers.json

site/expeditions/expeditions.geojson
site/expeditions/markers.json
Mapa działa w dwóch etapach:
1. markers.js + markers.json   → szybkie kółka
2. expeditions.js + expeditions.geojson → pełne trasy z ogonkami

🧪 Krok 6 – Test lokalny strony

Serwer lokalny uruchamiaj zawsze z katalogu site:
cd OneDrive/AKT-MAMUT/site
python -m http.server 8000
Otwórz:
http://localhost:8000
Uwaga: nie uruchamiaj lokalnego podglądu z katalogu AKT-MAMUT, bo ścieżki absolutne typu /assets/... przestaną działać.

🚀 Krok 7 – Publikacja EXPEDITIONS

W VS Code:
Source Control
Commit
Push
Netlify automatycznie zaktualizuje stronę:
https://aktmamut.eu

🏔️ Krok 8 – CHALLENGES: dane i konfiguracja

Challenges są generowane z Google Sheets. Zakładka CONFIG zawiera tabelę:
key    | sheet    | name                           | active
ro     | RO       | Romanian Peak Challenge       | 1
sk     | SK       | Slovakian Peak Challenge      | 1
hu     | HU       | Hungarian Peak Challenge      | 1
cz     | CZ       | Czech Peak Challenge          | 1
...
Znaczenie kolumn:
Dzięki CONFIG nie trzeba już edytować kodu przy zmianie nazwy zakładki lub wyłączaniu challenge.

⚙️ Krok 9 – Pipeline CHALLENGES

Uruchom:
python data/generate_challenges.py
Skrypt:
1. Pobiera CONFIG
2. Wybiera tylko challenge z active = 1
3. Pobiera odpowiednie zakładki Google Sheets
4. Buduje pliki challenges-*.json
5. Nadpisuje tylko te pliki, które faktycznie się zmieniły
Pliki wynikowe:
site/challenges/data/challenges-ro.json
site/challenges/data/challenges-sk.json
site/challenges/data/challenges-hu.json
site/challenges/data/challenges-cz.json
...
Challenge z active = 0 są pomijane. Przykład: raba.

🗺️ Krok 10 – Podgląd CHALLENGES

Mapy challenges otwierasz przez parametr region:
/challenges/index.html?region=ro
/challenges/index.html?region=sk
/challenges/index.html?region=hu
/challenges/index.html?region=cz
Przykłady:
https://aktmamut.eu/challenges/index.html?region=ro
https://aktmamut.eu/challenges/index.html?region=sk

🧷 Szybkie komendy

# instalacja bibliotek
python -m pip install -r requirements.txt

# expeditions
cd data
update_map.bat

# challenges
python generate_challenges.py

# lokalny podgląd strony:
cd ../site
python -m http.server 8000