
Kontekst
Na platformie Timocom oferty frachtu i klientów zmieniają się szybko. Oficjalny dostęp API bywa drogi lub niedostępny w potrzebnym zakresie, a ręczne przepisywanie danych zabiera czas i generuje błędy. Plugin powstał jako praktyczne obejście: słucha zmian w DOM, zbiera dane ofert i trzyma je w lekkim CRM po stronie przeglądarki.
Cel
Zaprojektowałem i wdrożyłem rozszerzenie Firefox, które:
- przechwytuje dane ofert frachtu / klientów w czasie zbliżonym do rzeczywistego,
- nie wymaga kosztownego API Timocom,
- daje lokalny CRM (leady, historia, statusy),
- działa w architekturze content script ↔ background ↔ storage.
Moja rola
Odpowiadałem za projekt, opracowanie rozwiązania, wdrożenie oraz opiekę powdrożeniową do 30 dni (poprawki po zmianach UI platformy, stabilizacja).
Zakres
Smart DOM monitoring
- MutationObserver zamiast agresywnego pollingu,
- reakcja na pojawianie się / zmianę listingów,
- niezależność od płatnego API.
Wbudowany CRM
- organizacja leadów i interakcji,
- trwałość danych (LocalStorage / IndexedDB),
- śledzenie statusów od kontaktu do domknięcia.
Warstwa techniczna
- content script (obserwacja DOM, parser, UI inject),
- background script (logika CRM, eventy),
- storage manager (preferencje + większe zbiory danych).
Podejście
Architektura event-driven: przeglądarka reaguje na zmiany strony, zamiast ciągle odpytywać sieć. Parser jest adaptacyjny — Timocom renderuje oferty w różnych układach zależnie od filtrów i widoku, więc wyciąganie danych musi mieć fallbacki i łagodną obsługę braków.
Content Script ↔ Background Script ↔ Storage
(DOM + parser) (CRM + eventy) (LocalStorage / IndexedDB)
Wyzwania
- Dynamiczny front platformy — klasyczny scraping pada przy SPA; MutationObserver + selektywne cele obserwacji.
- Zmienna struktura ofert — różne formaty w zależności od widoku; adaptive parsing i normalizacja.
- Wydajność przeglądarki — debounce, wąskie targety obserwacji, oszczędne przechowywanie, żeby monitoring nie „zjadał” tabów.
Rezultat
Powstało rozszerzenie Firefox, które zbiera oferty z Timocom bez API i porządkuje je w lokalnym CRM — tańsza i szybsza ścieżka operacyjna dla pracy z frachtem. Po wdrożeniu zapewniłem opiekę do 30 dni.


Stack
- JavaScript (ES6+)
- Firefox Extension API (content / background scripts)
- DOM MutationObserver, HTML5, CSS3
- LocalStorage + IndexedDB