Edge · LoRa · offline-first
Centrum sportów wodnych, które widzi każdego kursanta na wodzie, także bez internetu
Trackery GPS na LoRa, serwer brzegowy na plaży, strefy bezpieczeństwa z alarmem i pełny system rezerwacji z OTA. Bezpieczeństwo działa lokalnie, a chmura tylko pomaga, kiedy jest łącze.
- Status
- Wdrożone: baza na Mykonos i demo w Polsce
- Okres
- kwiecień – październik 2026
- Na żywo
- app.boardsforce.com ↗
- zasięg LoRa po wodzie zmierzony w teście, bezpośrednio do bramki
- 2,5 kmzasięg LoRa po wodzie zmierzony w teście, bezpośrednio do bramki
- z solarnym repeaterem na dachu: zasięg projektowy w linii wzroku nad wodą
- do 8 kmz solarnym repeaterem na dachu: zasięg projektowy w linii wzroku nad wodą
- otwartych portów: dostęp z internetu tylko przez Cloudflare Tunnel
- 0otwartych portów: dostęp z internetu tylko przez Cloudflare Tunnel
- endpointów API w FastAPI
- 198endpointów API w FastAPI
Problem
Na plaży nie ma pewnego internetu, a instruktor musi wiedzieć, gdzie jest każdy kursant: kto odpłynął za daleko, kto stoi w miejscu od kwadransa, czyj sprzęt wraca. Do tego rezerwacje, waivery, wypożyczalnia i kanały OTA, czyli wszystko, co dziś leży w Excelu i trzech aplikacjach.
Co zbudowałem
- Trackery GPS Meshtastic (SenseCAP T1000-E) nadają pozycję przez LoRa 868 MHz do bramki WIO L1 Pro przy serwerze. Repeater solarny wydłuża zasięg.
- NucBox (mini-PC) na plaży: FastAPI, PostgreSQL, InfluxDB, nginx, własny DNS i DHCP w LAN, HTTPS z certyfikatem Let's Encrypt. Tablety działają jako PWA także bez internetu, z mapą offline.
- Geofencing w odbiorniku pakietów: wyjście ze strefy bezpiecznej albo wejście w strefę zakazaną uruchamia ten sam alarm co SOS. Strefy rysuje się w edytorze na mapie, osobno dla każdego poziomu.
- Sesje na wodzie z timerem, pauzą i automatycznym podziałem. Tracker jest przypisany do sesji, nie do klienta. Wypożyczalnia ze skanerem QR i drukiem etykiet na drukarce Niimbot przez Bluetooth z przeglądarki.
- Panel w chmurze dla wielu firm: kalendarze Google, Stripe, Bókun (Viator i inne OTA: push, dostępność, webhooki), waivery z e-podpisem eIDAS przez firma.dev i podpis offline.
- Agent „Ask AI” w panelu właściciela: czyta sesje, sprzęt i telemetrię, odpowiada głosem (ElevenLabs) i podaje stan sieci mesh. Fabryka dem buduje stronę rezerwacji dla nowej szkoły z samego adresu URL.
Architektura
Najciekawsze jest to, co pod spodem
Wybierz przepływ, żeby zobaczyć, jak dane idą przez system. Kliknij element, żeby przeczytać szczegóły.
← przesuń diagram →
Przepływy
Alarm dociera do instruktora bez udziału internetu.
Kliknij element diagramu, żeby zobaczyć szczegóły.
- sprzęt
- brzeg / sieć
- usługa
- dane
- AI
- zewnętrzne
- ludzie / aplikacje
- radio
- tunel
- HTTPS
- lokalnie
- zdarzenie
Opis wszystkich elementów
- T1000-E · tracker GPS + SOS
- Tracker Meshtastic na ramieniu kursanta. Wysyła pozycję co 30 s (krócej zapychało kanał i gubiło telemetrię), ma przycisk SOS. Konfiguracja całej floty jednym skryptem: około minuty na tracker.
- Solar P1-Pro · repeater solarny
- Repeater SenseCAP Solar na maszcie. Monitorowany: brak sygnału przez 3 h oznacza awarię w panelu „Mesh health”.
- WIO L1 Pro · bramka LoRa → USB
- Bramka podpięta na stałe do NucBoxa przez USB. W teście na Zegrzu odbierała trackery z 2,5 km po wodzie, bez przeskoków w sieci mesh. Z solarnym repeaterem SenseCAP P1-Pro na dachu (antena 5,8 dBi, własne zasilanie) zasięg projektowy rośnie do 3–8 km w linii wzroku.
- receive.py · odbiornik + geofence
- Osobna usługa systemd. Dekoduje pakiety, dopasowuje węzły do trackerów z bazy, sprawdza każdą pozycję algorytmem point-in-polygon wobec stref i zgłasza zdarzenia: SOS, wyjście ze strefy, cisza GPS.
- InfluxDB · telemetria i ślady
- Szereg czasowy pozycji i telemetrii. Z niego powstaje historia przebiegu sesji i analityka.
- FastAPI · sesje, sprzęt, alarmy
- Serce systemu: klienci, sesje, wypożyczenia, strefy, zdarzenia. Konfiguracja bazy (marka, waluta, mapa) z jednego pliku, więc ta sama instalacja obsługuje Mykonos, Hel albo demo.
- PostgreSQL · dane operacyjne
- Klienci, sesje, sprzęt (79 egzemplarzy w sezonie), rezerwacje zsynchronizowane z chmury. Kopie zapasowe z timera.
- nginx · dnsmasq · LAN, HTTPS, DNS
- Router plażowy rozdaje adresy, a dnsmasq kieruje domenę na NucBoxa, więc tablety otwierają tę samą domenę z ważnym certyfikatem także bez internetu.
- Live · CMS · PWA na tablecie
- Mapa na żywo ze strefami, alarmy, rejestracja, karta klienta z QR, check-in. Zainstalowana jako PWA, z mapą offline do pobrania jednym przyciskiem.
- Niimbot B1 · etykiety QR (BLE)
- Drukarka etykiet sterowana z przeglądarki przez Web Bluetooth: etykiety sprzętu i karty klientów, także hurtowo.
- Cloudflare Tunnel · wyjście bez otwartych portów
- NucBox sam łączy się z Cloudflare, więc w routerze plaży nie ma przekierowań ani otwartych portów. Panel administracyjny za Cloudflare Access.
- book. · panel. · Droplet, wiele firm
- Rezerwacje online i panel właściciela dla wielu firm. Rezerwacje synchronizują się do NucBoxa, gdy jest łącze; plaża nie czeka na chmurę.
- Stripe · płatności
- Depozyt albo pełna płatność przy rezerwacji. Plan: Stripe Connect Express, żeby każda szkoła podłączała własne konto w 5 minut.
- Bókun · OTA, Viator
- Integracja OAuth i REST v2: wypychanie oferty, ceny, dostępność, zdjęcia i webhook rezerwacji.
- firma.dev · waivery eIDAS
- Oświadczenia podpisywane elektronicznie przed wejściem do wody, z wersją offline na tablecie.
- Claude · agent Ask AI
- Agent z narzędziami tylko do odczytu: sesje, sprzęt, telemetria, stan sieci mesh. Ma limit kosztów, a działania wymagające zatwierdzenia pokazuje do potwierdzenia.
- ElevenLabs · głos
- Odpowiedzi agenta i „przeczytaj sytuację” na mapie, odczytywane na głos. Stałe komunikaty są w cache na NucBoxie, więc grają też offline.
- Agent fleet · nadzór (plan)
- Projekt: tani model pilnuje stale 20+ lokalizacji, droższy wchodzi przy anomalii, a poprawki trafiają jako PR do zatwierdzenia.
Decyzje, które robią różnicę
Bezpieczeństwo nie zależy od chmury
Cały tor tracker → alarm działa w LAN. Chmura daje rezerwacje i agenta, ale jej awaria nie wyłącza SOS.
Tracker przypięty do sesji, nie do klienta
Ten sam tracker przechodzi przez wielu kursantów dziennie. Wiązanie z sesją daje poprawną historię i brak pomyłek przy wydawaniu.
Pojemność eteru to fizyka, nie konfiguracja
Kanały Meshtastic nie zwiększają pojemności. Skalowanie to osobne częstotliwości na kilku bramkach, a dalej TDMA z zegarem GPS na własnym firmware.
Jeden kod, wiele lokalizacji
Marka, waluta, mapa i kontakt są w configu. Demo dla nowej szkoły powstaje scraperem z jej strony w kilka minut.
Jak to działa
Cztery aplikacje, jeden system
Większość centrów żongluje narzędziem do rezerwacji, arkuszem, papierowym oświadczeniem i grupą na WhatsApp. SurfCenter zastępuje to czterema połączonymi aplikacjami z jednym źródłem prawdy.
CMS: check-in wypożyczeń i lekcji, karty klientów, sprzęt z QR i analityka.




Każdy klient na wodzie na jednej mapie GPS. Działa na plaży, offline, na dowolnym tablecie.




book.: rezerwacja 24/7 lekcji, kursów i wypożyczeń, pod marką szkoły.



Panel: godziny, zespół, katalog i channel manager OTA. Jedno zamknięcie blokuje stronę i każdy kanał.




Dane na ekranach są fikcyjne.
Stos
Linie oferty
Masz proces, który powinien działać sam?
30 minut, bez opłat. Powiem, czy to ma sens, jak bym to zbudował i ile kosztowałoby utrzymanie.