TMS dla europejskiego przewoźnika
Dedykowany system TMS dla przewoźnika z flotą chłodniczą: zlecenia, trasy, control tower, ETA, telematyka, rozliczenia. Zbudowany w appwise, pod NDA.
- Rola
- Główny programista full-stack (start jako backend developer)
- Czas trwania
- ponad 2 lata
- Wielkość zespołu
- od 6 do 3 (na końcu: 1 programista, QA, PM)
- Rok
- 2024-2026

Dedykowany system TMS zbudowany w appwise dla rodzinnego przewoźnika drogowego działającego na rynku europejskim, z flotą chłodniczą obsługującą branżę farmaceutyczną i spożywczą. Jedna platforma zastąpiła arkusze i kilka rozproszonych narzędzi: zlecenia, trasy, flota, kierowcy, umowy, dokumenty, rozliczenia i raportowanie. Nazwy klienta nie podaję ze względu na NDA. Projekt jest jedną z opublikowanych realizacji appwise w sektorze TSL.
Dołączyłem na starcie jako backend developer i w ciągu dwóch lat doszedłem do roli głównego programisty full-stack. Zespół zmniejszył się z sześciu osób do trzech (jeden programista, tester i project manager), a w ostatniej fazie byłem jedynym programistą: odpowiadałem za backend, frontend w Nuxt i bieżący kontakt techniczny z klientem.
Backend to modułowa aplikacja Laravel 12 z 31 modułami domenowymi (zlecenia, trasy, planowanie, dyspozytor, control tower, ETA, telematyka, kontrahenci, umowy, księgowość, wydruki i inne) na PostgreSQL z PostGIS, kolejkami Redis z Horizonem, Octane na FrankenPHP, Reverb do aktualizacji w czasie rzeczywistym i Meilisearch do wyszukiwania. Frontend to aplikacja Nuxt 3 z PrimeVue, Pinia, osiami czasu FullCalendar i mapami Trimble. Integracje obejmują czterech dostawców telematyki, routing PC*Miler z zapasowym, własnym GraphHopperem, system księgowy i BI klienta, kursy NBP, VIES, bramkę SMS i pocztę Microsoft 365.
Najważniejsze funkcje
- Control tower: jedna priorytetyzowana lista zadań budowana ze zdarzeń operacyjnych
- Planowanie tras z przepinkami naczep, czasem pracy kierowców i oknami załadunku
- ETA dla każdego zlecenia z automatycznymi alertami o odchyleniach
- Automatyczne przyjmowanie zleceń z kanałów klienta i masowy import załączników do umów
- Pozycje telematyczne od czterech dostawców, geofencing w PostGIS
- Oś czasu dyspozytora dla pojazdów i kierowców
- Rozliczenia i fakturowanie z kursami NBP i walidacją VIES
- Wydruki PDF i generowanie dokumentów, dziennik aktywności dla każdej zmiany
- Aktualizacje w czasie rzeczywistym przez WebSocket, logowanie dwuskładnikowe SMS lub e-mail
- Interfejs wielojęzyczny, wielowalutowy i świadomy stref czasowych
Wyzwania i rozwiązania
- Ujednolicenie czterech dostawców telematyki (SOAP, REST, push i pull) w jeden model pozycji i alarmów
- Utrzymanie dokładnego ETA w ramach dziennego limitu API routingu, z własnym fallbackiem
- Procedury geofencingu uruchamiane bezpośrednio w PostgreSQL, żeby obsłużyć pozycje floty w skali
- Stabilne dowożenie przy zespole malejącym z sześciu do trzech osób: 194 pliki testów Pest, CI/CD na trzy środowiska, automatyczne backupy
- Przejście od zadań backendowych do odpowiedzialności za cały produkt i rozmowę z klientem
Wyniki
- Codzienne użycie produkcyjne przez dyspozytorów, planistów i księgowość od 2024 roku
- 31 modułów Laravel, 194 pliki testów, wdrożenia na dev, stage i produkcję z GitLab CI
- Dowiezione trzyosobowym zespołem w ostatniej fazie
- Na liście realizacji appwise w sektorze TSL