Bearer
Tokeny domyslnie anonimowe — zero RODO, pelna prywatnosc
Water on Airports — System Documentation v2.0
Ztokenizowany system dystrybucji wody pitnej na lotniskach. Cyfrowe tokeny (QR code) umozliwiaja sprawna, bezgotowkowa dystrybucje wody dla pasazerow i pracownikow.
Dostep do wody pitnej na lotniskach jest ograniczony i kosztowny. Pasazerowie opoznionych lotow, uczestnicy eventow czy pracownicy lotniska czesto nie maja wygodnego sposobu na otrzymanie wody bez stania w kolejkach czy szukania automatow.
Lotniska i linie lotnicze potrzebuja systemu, ktory pozwoli im szybko, masowo i kontrolowanie dystrybuowac wode do uprawnionych osob — z pelna sciezka audytu.
Water on Airports to platforma tokenowa, w ktorej cyfrowy token (kod QR) jest wymieniany na butelke wody przy dystrybutorze. System obsluguje pelny cykl zycia tokena:
Kazda rola (oprocz beneficjenta) wymaga klucza API do autoryzacji. Klucze sa generowane automatycznie przez system i przekazywane w lancuchu zaufania:
| Rola | Skad dostaje klucz API | Gdzie go uzywa |
|---|---|---|
| Admin | Klucz ustawiony w konfiguracji serwera (.env).
Znany tylko administratorowi systemu. |
GUI → zakladka Admin → pole "Admin API Key" |
| Institution | Admin tworzy instytucje w panelu Admin → system generuje klucz API → Admin kopiuje go i przekazuje instytucji (emailem, w umowie, etc.). | GUI → zakladka Institution → pole "Institution API Key" |
| Operator | Admin tworzy dystrybutor w panelu Admin → system generuje klucz API → Admin konfiguruje terminal/automat tym kluczem lub przekazuje operatorowi. | GUI → zakladka Operator → pole "Distributor API Key" |
| Beneficiary | Nie potrzebuje klucza API. Otrzymuje kod QR od instytucji (wydruk, email, SMS, w aplikacji). QR code = jedyny "klucz". | GUI → zakladka Beneficiary → pole "Your QR Code" |
| Auditor | Admin tworzy audytora w panelu Admin → system generuje klucz API → Admin przekazuje audytorowi. | GUI → zakladka Auditor → pole "Auditor API Key" |
Konfiguracja serwera (.env)
│
▼
Admin (klucz z .env)
│
├──▶ Tworzy instytucje → klucz API → przekazuje Institution
│ │
│ └──▶ Emituje tokeny → QR code → przekazuje Beneficiary
│
├──▶ Tworzy dystrybutor → klucz API → konfiguruje Operator
│
└──▶ Tworzy audytora → klucz API → przekazuje Auditor
Pierwszy krok po uruchomieniu systemu:
.env i tworzy co najmniej jedna instytucje i jeden dystrybutorSystem definiuje 5 rol, kazda z dedykowanym interfejsem i uprawnieniami.
Administrator systemu — zarzadza cala platforma.
Klucz API: Zdefiniowany w konfiguracji serwera (.env). Tylko administrator ma do niego dostep.
Co robi:
Jak uzywa: Panel Admin w GUI → wpisuje klucz administratora → CRUD instytucji, dystrybutorow, audytorow. Przy kazdym utworzeniu encji system generuje unikalny klucz API — Admin kopiuje go i przekazuje odpowiedniej osobie.
Lotnisko, linia lotnicza, firma sponsorska — podmiot fundujacy wode.
Klucz API: Otrzymany od Admina po rejestracji instytucji w systemie.
Co robi:
group_id="LO1234")Jak uzywa: Portal Institution w GUI → wpisuje klucz instytucji → emituje tokeny, sprawdza saldo, revoke.
Przykladowy scenariusz: Lot LO1234 opozniony o 4h → instytucja emituje 150 tokenow x 2 butelki z group_id="LO1234" i data wygasniecia. QR kody drukowane i rozdawane przy gate.
Osoba lub automat przy punkcie wydawczym wody.
Klucz API: Otrzymany od Admina po utworzeniu dystrybutora. Konfigurowany w terminalu/automacie.
Co robi:
Jak uzywa: Terminal Operator w GUI → wpisuje klucz dystrybutora → skanuje QR → przycisk "DISPENSE WATER" → system odpowiada w <1s.
Zabezpieczenia: Rate limit 60s miedzy uzyciam tego samego tokena (ochrona przed fraudem). Walidacja typu produktu (token na wode nie zadziala na automacie z kawa).
Pasazer, pracownik, gosc — osoba ktora otrzymala QR code.
Klucz API: Nie wymaga. Jedyne "uprawnienie" to kod QR otrzymany od instytucji (wydruk, email, SMS, aplikacja).
Co robi:
Jak uzywa: Strona Beneficiary w GUI → wpisuje swoj kod QR → widzi saldo i historie. Nie wymaga logowania ani klucza — token jest typu bearer (kto ma QR, ten korzysta).
Kontroler, zarzad lotniska, regulator — rola read-only.
Klucz API: Otrzymany od Admina po utworzeniu konta audytora.
Co robi:
Jak uzywa: Dashboard Auditor w GUI → wpisuje klucz audytora → "Load Reports" → kafelki z podsumowaniem + tabele per instytucja/dystrybutor.
Lot opozniony o 4h. Lotnisko emituje 150 tokenow (po 2 butelki kazdy)
z group_id = numer lotu i data wygasniecia = czas odlotu + 2h.
QR kody drukowane i rozdawane przy gate. Gdy lot odwolany — batch revoke
uniewaznieni wszystkie tokeny jednym kliknieciem.
Pasazer kupuje bilet z dodatkiem "water package" (3 butelki).
System airline automatycznie emituje token z max_uses=3.
QR pojawia sie w aplikacji obok boarding pass. Pasazer korzysta
z dowolnego dystrybutora na lotnisku.
Firma X sponsoruje event na lotnisku — chce rozdac 500 butelek wody. Rejestruje sie jako instytucja, emituje 500 tokenow jednorazowych. QR kody na ulotkach lub ekranach. Po evencie niewykorzystane tokeny automatycznie wygasaja. Audytor generuje raport: 387/500 wykorzystanych.
Pasazer VIP wchodzi do lounge — system wydaje token
z max_uses=99 i wygasnieciem o polnocy. Pasazer korzysta
z dystrybutora wielokrotnie przez caly dzien.
Tokeny domyslnie anonimowe — zero RODO, pelna prywatnosc
Emisja do 1000 tokenow jednym wywolaniem API
Tokeny grupowane per lot/event — latwiejszy revoke i raportowanie
Gotowe na rozszerzenie: woda, kawa, snack — jedno API
60s cooldown — ochrona przed fraudem
Walidacja <100ms, raporty na zywo
| Backend | Python / FastAPI (async) |
| Baza danych | SQLite (PoC) → PostgreSQL (produkcja) |
| Frontend | HTML + vanilla JS + Pico CSS |
| Infrastruktura | Docker Compose + Caddy (reverse proxy) |
| Bezpieczenstwo | API key per rola, rate limiting, WireGuard VPN |
| Docelowo | Django + PostgreSQL + HTTPS + domena |
| Akcja | Admin | Institution | Operator | Beneficiary | Auditor |
|---|---|---|---|---|---|
| Zarzadzanie instytucjami | ✔ | ||||
| Zarzadzanie dystrybutorami | ✔ | ||||
| Emisja tokenow | ✔ | ✔ (swoje) | |||
| Uniewaznieni tokenow | ✔ | ✔ (swoje) | |||
| Realizacja tokena (wydanie) | ✔ | ||||
| Sprawdzenie salda | ✔ | ✔ | ✔ | ✔ | ✔ |
| Historia transakcji | ✔ | ✔ | ✔ | ✔ | ✔ |
| Raporty globalne | ✔ | ✔ |
Water on Airports v2.0 — PoC Documentation
Wygenerowano: