engineeringAplikacja webowa · PWA

Aplikacja serwisowadla firmy HVAC.

Zamiast zleceń ustalanych w wiadomościach na WhatsAppie — jedna aplikacja dla biura i serwisantów. Lista kontrolna przy urządzeniu, podpis klienta na ekranie telefonu i protokół PDF gotowy w chwili odbioru zlecenia.

groups4 role użytkowników
wifi_offDziała bez zasięgu
picture_as_pdfProtokół PDF z podpisem
panel biura · wersja demo
Pulpit biura w aplikacji serwisowej — liczniki statusów i lista zleceń z postępem (dane demonstracyjne)
zoom_in

Punkt wyjścia

Serwis prowadzony na WhatsAppie

Firma instalacyjno-serwisowa realizuje kontrakt na regularne przeglądy klimatyzacji w wielu obiektach. Wcześniej nie miała żadnego systemu — biuro i ekipa komunikowały się przez WhatsApp, a informacje o zleceniach rozchodziły się po wiadomościach i telefonach poszczególnych osób.

Przed

  • closeBrak systemu — zlecenia i ustalenia przekazywane w wiadomościach na WhatsAppie
  • closeInformacje rozproszone po czatach i telefonach poszczególnych osób
  • closeBrak wspólnej bazy obiektów i urządzeń
  • closeBrak pulpitu statusów i historii — kto, co i kiedy zrobił

Po wdrożeniu

  • checkJedna aplikacja dla biura, serwisantów i zamawiającego
  • checkZlecenie trafia do serwisanta od razu, z powiadomieniem push
  • checkWyniki, uwagi, materiały, zdjęcia i podpis wracają do biura same
  • checkPulpit statusów na żywo i dziennik każdej zmiany

Obieg zlecenia

Od zgłoszenia do protokołu — w jednym miejscu

  1. add_task
    01

    Biuro tworzy zlecenie

    Obiekt i urządzenia z wykazu albo dopisane ręcznie, priorytet, uwagi, jeden lub kilku serwisantów.

  2. notifications_active
    02

    Serwisant dostaje powiadomienie

    Push z linkiem prosto do zlecenia — pilne zgłoszenia są wyróżnione na liście zadań.

  3. checklist
    03

    Lista kontrolna przy urządzeniu

    Czynności wg umowy (12 pkt), kontrola F-gaz (7 pkt) lub dygestorium (3 pkt), wynik, uwagi, materiały i zdjęcia.

  4. draw
    04

    Podpis klienta i zamknięcie

    Klient podpisuje palcem na ekranie, serwisant wpisuje czas pracy i liczbę osób. Brak klienta? Zamknięcie z podaniem powodu.

  5. fact_check
    05

    Odbiór w biurze

    Biuro odbiera zlecenie, wpisuje cenę netto — protokół PDF jest gotowy do wysłania.

Serwisant w terenie

Zaprojektowana do pracy przy urządzeniu, nie przy biurku

Nadrzędna zasada projektu: serwisant ma nie myśleć o aplikacji. Instaluje ją na telefonie jak zwykłą aplikację, a w piwnicy bez zasięgu pracuje dalej — synchronizacja nadrobi się sama.

back_hand

Obsługa w rękawicach

Cele dotykowe minimum 48 px, jeden ekran = jedno zadanie, wysoki kontrast do pracy w słońcu.

cloud_off

Brak zasięgu nie przeszkadza

Zmiany trafiają do lokalnej kolejki (IndexedDB) i synchronizują się same, gdy telefon złapie sieć.

mic

Dyktowanie uwag

Opis usterki można podyktować zamiast pisać na małej klawiaturze (Web Speech API).

inventory_2

Zgłoszenie potrzebnego towaru

Serwisant zaznacza, czego brakuje — biuro dostaje powiadomienie i zmienia status na „zamówiono towar".

Lista zadań serwisanta z postępem zleceń (dane demonstracyjne)
zoom_in
Moje zadania
Lista kontrolna czynności serwisowych przy urządzeniu (dane demonstracyjne)
zoom_in
Lista kontrolna przy urządzeniu
Zlecenie ze zgłoszeniem potrzebnego towaru i statusami urządzeń (dane demonstracyjne)
zoom_in
Zgłoszenie potrzebnego towaru
Podpis klienta składany palcem na ekranie telefonu (dane demonstracyjne)
zoom_in
Podpis klienta na ekranie

Panel biura

Biuro widzi wszystko na żywo — i ma to na piśmie

Koordynator przydziela pracę, pilnuje terminów i rozlicza zlecenia bez telefonów do ekipy. Każda zmiana ma autora i datę, a zamawiający może zajrzeć w postęp prac na własnym koncie.

dashboard

Pulpit statusów

Liczniki obiegu, filtry, wyszukiwarka i postęp każdego zlecenia w procentach.

event_repeat

Przeglądy półroczne

Jeden przegląd generuje zlecenia dla wszystkich obiektów i kończy się protokołem zbiorczym.

summarize

Raporty CSV i PDF

Usterki, zużyte materiały i wykonane przeglądy — z filtrem dat i obiektu.

history

Dziennik zmian

Kto zmienił status, cenę czy priorytet, z wartością przed i po — pełna rozliczalność.

visibility

Konto zamawiającego

Podgląd tylko przypisanych obiektów, bez cen i bez możliwości zapisu — blokada w API, nie tylko w interfejsie.

cancel

Anulowanie z powodem

Każde anulowanie wymaga uzasadnienia i zostaje w historii zlecenia.

panel biura · wersja demo
Szczegół zlecenia do odbioru w panelu biura — priorytet, serwisanci, cena netto (dane demonstracyjne)
zoom_in
Zlecenie do odbioru — priorytet, serwisanci i cena netto
panel biura · wersja demo
Raport usterek z filtrem dat i obiektu oraz eksportem CSV i PDF (dane demonstracyjne)
zoom_in
Raport usterek z eksportem CSV i PDF
panel biura · wersja demo
Dziennik zmian — kto, kiedy i co zmienił w zleceniach (dane demonstracyjne)
zoom_in
Dziennik zmian — wartość przed i po każdej edycji

Protokół serwisowy

Dokument dla klienta generuje się sam

Po zamknięciu zlecenia serwer składa protokół PDF: dane obiektu, serwisanci z certyfikatami F-gaz, czas pracy, wynik każdego urządzenia z listą wykonanych czynności, uwagi, materiały, zdjęcia i podpis odbiorcy. Zamawiający dostaje wersję bez ceny, a przegląd półroczny kończy się protokołem zbiorczym.

drawPodpis odbiorcy
photo_cameraZdjęcia usterek
money_offWersja bez ceny
Pierwsza strona protokołu serwisowego PDF z danymi zlecenia i wynikami przeglądu (dane demonstracyjne)
zoom_in

Bezpieczeństwo i dane

Podpisy, zdjęcia i ceny pod kontrolą

Aplikacja przechowuje podpisy klientów, zdjęcia z obiektów i ceny usług, a konto zamawiającego ma widzieć tylko swoje. Dlatego zabezpieczenia są w API, a nie wyłącznie w wyglądzie interfejsu.

  • keyKrótkie tokeny dostępu (15 min) tylko w pamięci, odświeżanie w ciasteczku HttpOnly z rotacją
  • lock_clockLimit prób logowania, Content-Security-Policy i nagłówki bezpieczeństwa
  • location_offZdjęcia sprawdzane i kodowane na nowo — bez EXIF i współrzędnych GPS
  • admin_panel_settingsUprawnienia do zleceń rozstrzygane w jednym miejscu po stronie serwera
  • policyInformacja RODO przy podpisie klienta i analiza przetwarzania danych

Przebieg współpracy

Pierwsza wersja po tygodniu, rozwój z uwag ekipy

  1. Tydzień 1

    Plan i prototyp

    Rozmowa z biurem i serwisantami, spisanie obiegu, model danych, makiety.

  2. Po 7 dniach

    Pierwsza wersja w firmie

    Ekipa zaczyna testy na prawdziwych zleceniach „od czystej karty".

  3. 10 tygodni

    17 aktualizacji

    Kolejne funkcje z uwag użytkowników: towar, czas pracy, cena, anulowanie, zlecenia zakładane przez serwisanta.

  4. Dziś

    Na serwerze klienta

    Przeniesienie na własny hosting firmy, paczki aktualizacji z migracjami bazy — bez dostępu do konsoli.

Stack technologiczny

Nowoczesny front, tanie w utrzymaniu zaplecze

Backend celowo bez ciężkiego frameworka — aplikacja działa na zwykłym hostingu współdzielonym, bez osobnego serwera i bez stałej opłaty za platformę.

Aplikacja (PWA)

  • check_circleReact 19 + Vite
  • check_circleReact Router 7
  • check_circleService Worker i instalacja na telefonie
  • check_circleIndexedDB — kolejka offline
  • check_circleWeb Push (VAPID)
  • check_circleWeb Speech API

API i dane

  • check_circlePHP 8 + Slim 4
  • check_circleMySQL / MariaDB — 28 tabel
  • check_circle60 endpointów REST
  • check_circledompdf — protokoły i raporty
  • check_circleSynchronizacja /sync pull + push

Wdrożenie

  • check_circleHosting współdzielony — niski koszt utrzymania
  • check_circlePaczki aktualizacji z migracjami
  • check_circleDziennik zmian (audit log)
  • check_circleAnaliza bezpieczeństwa i RODO

Realizacja prezentowana anonimowo — nazwa firmy, zamawiający i dane z obiektów nie są publikowane. Zrzuty ekranu pochodzą z wersji demonstracyjnej z fikcyjnymi danymi, zbudowanej na tym samym kodzie.

Twoja ekipa też pracuje na komunikatorze?

Zamieńmy Twój obieg zleceń w aplikację

Serwis, montaże, przeglądy, odbiory — jeśli zlecenia krążą dziś między telefonem, papierem i arkuszem, zacznijmy od rozmowy o tym, jak pracuje Twoja firma.