Przejdź do treści
Jakub Zając

01 / Aplikacja lojalnościowa i panel administracyjny

IZAPzoo

Kompletny program lojalnościowy dla sieci sklepów stacjonarnych: aplikacja mobilna z kartą klienta w telefonie, obsługa przy kasie i panel administracyjny do zarządzania punktami, nagrodami i promocjami.

Klient
IZAP — sieć sklepów stacjonarnych z artykułami zoologicznymi i wędkarskimi.
Usługi
Aplikacje mobilneTworzenie oprogramowaniaBazy danych i dane
Ekran startowy aplikacji z identyfikacją programu lojalnościowego

Przegląd

IZAPzoo to program lojalnościowy sieci sklepów zoologiczno-wędkarskich IZAP przeniesiony w całości do świata cyfrowego. Zamiast plastikowej karty klient nosi w telefonie aplikację: zakłada konto, zbiera punkty za zakupy, odbiera nagrody i vouchery, śledzi promocje i widzi historię swoich transakcji. Zaprojektowałem i zbudowałem całość — od aplikacji mobilnych na Androida i iOS, przez backend w chmurze, po panel administracyjny dla firmy.

Sercem systemu jest kod QR klienta. Przy kasie wystarczy pokazać ekran telefonu — sprzedawca skanuje kod, transakcja trafia do systemu, punkty naliczają się automatycznie, a klient od razu widzi je na koncie. Po drugiej stronie działa panel administracyjny, w którym firma zarządza nagrodami, voucherami, promocjami i użytkownikami, z uprawnieniami dopasowanymi do roli: kasjer widzi co innego niż kierownik, a kierownik co innego niż administrator.

Obie aplikacje przeszły proces publikacji i są dostępne w Google Play oraz App Store. Backend działa w chmurze i został zaprojektowany tak, żeby rósł razem z siecią — dołączenie kolejnego sklepu nie wymaga zmian w kodzie.

Wyzwanie

Program lojalnościowy w handlu stacjonarnym ma jedno bezwzględne ograniczenie: kolejkę przy kasie. Cała obsługa — identyfikacja klienta, naliczenie punktów, realizacja vouchera — musi zamykać się w kilku sekundach i działać niezawodnie na dowolnym telefonie, także u klientów, którzy nie są biegli technicznie. Jeżeli aplikacja spowalnia kasę choćby o chwilę, personel przestaje ją polecać i program umiera w praktyce, niezależnie od tego, jak dobrze wygląda w materiałach marketingowych.

Drugim wyzwaniem była spójność danych i zaufanie do salda punktów. Wiele sklepów, wielu kasjerów i tysiące drobnych operacji oznacza, że system musi mieć jedno źródło prawdy — saldo, którego nie da się „popsuć” ani po stronie klienta, ani przez pomyłkę przy kasie. Do tego dochodzą dane osobowe uczestników programu, które trzeba przechowywać i przetwarzać zgodnie z przepisami, oraz wymaganie, żeby promocjami i nagrodami zarządzali pracownicy firmy — bez udziału programisty przy każdej zmianie.

Moja rola

Odpowiadałem za projekt w całości: analizę potrzeb z klientem, architekturę systemu, model danych, aplikacje mobilne na obie platformy, backend, panel administracyjny oraz publikację w Google Play i App Store. Klient rozmawiał bezpośrednio z osobą, która pisała kod — każda decyzja, od kształtu ekranu kasjerskiego po strukturę bazy danych, zapadała bez pośredników.

Standardy pracy — kontrola wersji, testy, oddzielne środowiska i dokumentacja — przeniosłem z projektów realizowanych w środowiskach enterprise, m.in. związanych z organizacjami międzynarodowymi takimi jak PwC, Roche czy E.ON. Dla klienta oznacza to system, który da się bezpiecznie rozwijać i który w razie potrzeby przejmie inny zespół.

Rozwiązanie

01

Rejestracja i konto lojalnościowe

Klient zakłada konto w aplikacji w kilku krokach i od razu dostaje aktywną kartę lojalnościową. Logowanie oparłem na sprawdzonych mechanizmach uwierzytelniania, a zakres zbieranych danych ograniczyłem do minimum potrzebnego do działania programu. Konto trzyma wszystko w jednym miejscu: saldo punktów, dostępne nagrody, vouchery i historię zakupów.

02

Kod QR i przepływ przy kasie

Każdy klient ma w aplikacji swój kod QR, który pełni rolę identyfikatora — i tylko identyfikatora. Kasjer skanuje kod, system rozpoznaje konto i rejestruje transakcję, a punkty naliczają się po stronie serwera. Ekran kasjerski zaprojektowałem z myślą o realiach sklepu: minimum kroków, czytelne potwierdzenia i zachowanie przewidywalne także wtedy, gdy klient pokaże kod z zarysowanego ekranu albo przy słabym oświetleniu.

03

Punkty, nagrody i vouchery

Punkty zapisuję jako rejestr operacji, a nie jedną nadpisywaną liczbę — każde naliczenie i każda realizacja nagrody zostawia trwały ślad, więc saldo zawsze da się wyjaśnić i zweryfikować. Na tej podstawie działa katalog nagród i system voucherów: klient wymienia punkty w aplikacji, a realizacja przy kasie jest potwierdzana przez system, co zamyka drogę do wykorzystania tego samego vouchera dwa razy.

04

Promocje i historia transakcji

Aplikacja jest dla sieci bezpośrednim kanałem kontaktu z klientem: promocje i akcje specjalne konfiguruje się w panelu i publikuje bez udziału programisty. Klient z kolei widzi pełną historię swoich transakcji i operacji punktowych — ta przejrzystość buduje zaufanie do programu skuteczniej niż jakakolwiek regulaminowa obietnica.

05

Panel administracyjny i role

Panel administracyjny obsługuje codzienną pracę programu: zarządzanie nagrodami, voucherami, promocjami, kontami klientów i użytkownikami systemu. Uprawnienia oparłem na rolach — kasjer wykonuje operacje przy kasie, kierownik sklepu widzi więcej, a pełna konfiguracja programu zarezerwowana jest dla administratorów. Wrażliwe operacje są rejestrowane, więc zawsze wiadomo, kto i kiedy wprowadził zmianę.

06

Backend w chmurze i publikacja aplikacji

Backend działa w chmurze i stanowi jedyne źródło prawdy dla całego systemu — aplikacje mobilne i panel korzystają z tego samego API. Architektura zakłada wzrost sieci: kolejne sklepy i większy ruch to kwestia konfiguracji i zasobów, nie przebudowy. Przeprowadziłem też obie aplikacje przez procesy publikacji i recenzji w Google Play oraz App Store, łącznie z przygotowaniem materiałów do sklepów.

Stos technologiczny

Aplikacje mobilne

  • Android
  • iOS
  • [DO UZUPEŁNIENIA / TO BE PROVIDED: technologia aplikacji mobilnej — framework wieloplatformowy lub kod natywny]

Backend i API

  • [DO UZUPEŁNIENIA / TO BE PROVIDED: język i framework backendu]
  • [DO UZUPEŁNIENIA / TO BE PROVIDED: mechanizm uwierzytelniania i autoryzacji]

Baza danych

  • [DO UZUPEŁNIENIA / TO BE PROVIDED: silnik bazy danych]

Chmura i dystrybucja

  • [DO UZUPEŁNIENIA / TO BE PROVIDED: dostawca chmury]
  • Google Play
  • App Store

Decyzje inżynierskie

  • 01

    Serwer jest jedynym źródłem prawdy o punktach — aplikacja mobilna niczego nie nalicza lokalnie, tylko prezentuje stan z backendu. To eliminuje całą klasę problemów z rozjazdem sald między urządzeniami.

  • 02

    Kod QR to wyłącznie identyfikator, a nie nośnik wartości — samo zeskanowanie kodu niczego nie zmienia, bo każdą operację autoryzuje serwer. Podrobienie czy skopiowanie kodu nie daje więc dostępu do punktów.

  • 03

    Historia punktów jako rejestr operacji zamiast nadpisywanego salda — każdą rozbieżność można prześledzić do konkretnej transakcji, co przy programie lojalnościowym jest warunkiem zaufania obu stron.

  • 04

    Ekran kasjerski projektowany od kolejki, nie od funkcji — najpierw ustaliłem, ile sekund i ile dotknięć ekranu może kosztować obsługa klienta, a dopiero potem układ interfejsu.

  • 05

    Uprawnienia oparte na rolach od pierwszego dnia, a nie dodane później — dzięki temu rozdzielenie obowiązków między kasjerów, kierowników i administratorów nie wymagało przebudowy panelu.

Bezpieczeństwo i niezawodność

  • Zakres danych osobowych ograniczyłem do minimum potrzebnego do prowadzenia programu, a ich przetwarzanie zaprojektowałem z myślą o wymogach RODO — łącznie z możliwością obsługi żądań usunięcia konta.

  • Hasła są przechowywane wyłącznie w postaci skrótów opartych na sprawdzonych algorytmach, a cała komunikacja między aplikacjami a backendem jest szyfrowana.

  • Każda operacja na punktach, nagrodach i voucherach jest walidowana i autoryzowana po stronie serwera — struktura bazy danych i reguły biznesowe uniemożliwiają m.in. dwukrotną realizację tego samego vouchera czy ręczną manipulację saldem.

  • Panel administracyjny działa na zasadzie najmniejszych uprawnień: każda rola widzi tylko to, czego potrzebuje, wrażliwe operacje trafiają do dziennika zdarzeń, a dane są objęte regularnymi kopiami zapasowymi.

Efekt

Sieć IZAP ma własny, cyfrowy kanał lojalnościowy: klienci noszą kartę w telefonie, a personel we wszystkich sklepach pracuje na jednym, spójnym obrazie punktów, nagród i transakcji.

Promocje, nagrody i vouchery firma prowadzi samodzielnie w panelu administracyjnym — uruchomienie nowej akcji nie wymaga kontaktu z programistą ani zmian w aplikacji.

Aplikacje są opublikowane w Google Play i App Store, a backend w chmurze jest gotowy na dalszy wzrost sieci — zarówno pod względem liczby sklepów, jak i liczby uczestników programu.

Galeria

Ekran główny — saldo izapek, postęp do progu i polecane kupony
Ekran główny — saldo izapek, postęp do progu i polecane kupony
Onboarding — wybór sklepu macierzystego
Onboarding — wybór sklepu macierzystego
Profil — poziom uczestnika, historia paragonów i ustawienia konta
Profil — poziom uczestnika, historia paragonów i ustawienia konta

Inne realizacje

Porozmawiajmy o Twoim projekcie

Chętnie opowiem, jak podobne podejście sprawdziłoby się w Twoim przypadku — i czego bym uniknął.