Dowio
System dostaw dla restauracji: panel do przyjmowania i przypisywania zamówień, mapa kurierów w trakcie zmiany oraz aplikacja kuriera na telefon z trasą i rozliczeniem gotówki.
- Rodzaj
- Produkt własny
- Typ
- Aplikacja webowa: panel restauracji i aplikacja kuriera (PWA)
- Platforma
- Web · komputer, tablet i telefon

Overview
Dowio łączy telefon kuriera z panelem restauracji. Restauracja dodaje dostawy — ręcznie albo wklejając tekst zamówienia — przypisuje je kurierom, widzi ich na mapie w trakcie zmiany i rozlicza gotówkę.
Kurier łączy telefon z lokalem jednorazowym kodem, prowadzi trasę, zamyka dostawy z formą płatności i przekazuje zmianę do rozliczenia. Lokalizacja jest wysyłana tylko w czasie aktywnej zmiany.
Projekt wyrósł z prostego kalkulatora utargu kasy, który nadal działa w tym samym repozytorium. Wszystkie dane na zrzutach pochodzą z fikcyjnego „lokalu demonstracyjnego”.
Project Showcase
Zrzuty i nagrania z działającej wersji projektu, w jego własnej stylistyce. Wszystkie dane pochodzą z fikcyjnego lokalu demonstracyjnego.




Telefon
Kurier · połączenie kodem
Kurier · trasa
Kurier · rozliczenie
Panel na telefonie
Funkcjonalności
- 01
Tablica dostaw
Gotowe do odbioru, w drodze, zakończone i wymagające uwagi — z filtrem źródła i kuriera.
- 02
Nowa dostawa z wklejania
Treść zamówienia wklejona z innego systemu jest rozpoznawana i sprawdzana; duplikat numeru jest wykrywany.
- 03
Mapa na żywo
Pozycje tylko z aktywnej zmiany, z wiekiem pozycji i przygaszeniem starych. Pozycje demonstracyjne są podpisane.
- 04
Kurierzy i kody
Telefon łączy się z lokalem jednorazowym kodem ważnym 15 minut; odłączenie jednym przyciskiem.
- 05
Aplikacja kuriera
Trasa, odbiór, płatność przy drzwiach, zgłoszenie problemu i rozliczenie zmiany — w przeglądarce telefonu.
- 06
Rozliczenia i raporty
Restauracja liczy gotówkę, różnica wymaga opisu. Raport okresu z podziałem na formy płatności i eksportem CSV.
Technologie
Tylko to, co jest używane — sprawdzone w zależnościach i importach kodu projektu.
- vinext (Next.js API na Vite 8)
- trasy aplikacji i API
- React 19 · TypeScript
- panel i aplikacja kuriera
- Cloudflare Workers · D1
- serwer i wspólna baza panelu oraz telefonów
- Drizzle ORM
- schemat i migracje bazy
- Własny system CSS
- tokeny, komponenty i ruch Dowio (bez biblioteki UI)
- PWA · Geolocation API
- aplikacja kuriera, lokalizacja tylko w czasie zmiany
- OpenStreetMap (wycinek danych)
- własny podkład mapy obszaru demonstracyjnego
- node:test
- 75 testów, w tym API na prawdziwych migracjach
Repozytorium zawiera też zestaw komponentów startowych (m.in. biblioteki wykresów i formularzy), z którego Dowio nie korzysta — dlatego nie ma go na liście.
Podejście techniczne
- R02.1
Kwoty w groszach
Wszystkie kwoty są liczbami całkowitymi groszy — bez arytmetyki zmiennoprzecinkowej na pieniądzach.
- R02.2
Bez podwójnych płatności
Ponowiony zapis z telefonu niesie klucz idempotencji, więc słaby zasięg nie dubluje płatności ani dostawy. Kolejka offline pokazuje „Oczekuje na wysłanie”, nie sukces.
- R02.3
Przypisanie bez wyścigu
Przypisanie dostawy to jedna warunkowa operacja — dwie osoby nie przypiszą tego samego zamówienia jednocześnie.
- R02.4
Historia tylko dopisywana
Korekta kierownika jest osobnym zdarzeniem z autorem, powodem i czasem — nic nie jest nadpisywane.
- R02.5
Uczciwe granice
Linie na mapie łączą adresy w kolejności, nie są trasą drogową. PWA wysyła pozycję tylko przy otwartej aplikacji — co jest opisane w interfejsie.
UX/UI
Jasny interfejs do pracy
Spokojna paleta, duże przyciski i jeden granatowy kolor akcji — panel używany przez całą zmianę, często w pośpiechu.
Stan zamiast obietnic
„Brak pozycji”, „GPS 19 h temu”, „Nieaktualna lokalizacja” — interfejs mówi, co wie, a czego nie.
Telefon jest pierwszy
Aplikacja kuriera ma dolną nawigację, przyciski na całą szerokość i jedną główną akcję na ekranie.
Prywatność kuriera
Panel wyjaśnia, że śledzenie kończy się ze zmianą, a brak zgody na GPS nie blokuje rozliczenia.
