Dominik Krzemiński
Powrót do projektów

Stampulse

Platforma lojalnościowa dla lokalnego biznesu — aplikacja mobilna, dwa portale, jeden backend .NET.

Rola
Lead engineer
Okres
sty 2024 – Obecnie
Status
Aktywny

Metryki

  • 5Aplikacje w monorepo
  • 6Serwisy backendowe

Technologie

  • .NETEkspercki
  • C#Ekspercki
  • ASP.NET CoreEkspercki
  • EF CoreEkspercki
  • PostgreSQLEkspercki
  • RedisPraktyczny
  • ReactPraktyczny
  • FlutterPraktyczny
  • KubernetesPraktyczny
  • gRPCPraktyczny

Problem

Papierowe karty pieczątkowe się gubią, a właściciel lokalu zostaje bez żadnych danych — nie wie, kto wraca, jak często i ile jest wart powracający klient. Istniejące aplikacje lojalnościowe rozwiązują to, każąc klientowi zainstalować osobną aplikację dla każdej kawiarni, czego nikt nie robi.

Kształt systemu

Backend to niewielka liczba serwisów, z których każdy jest właścicielem wyraźnie oddzielonych danych: tożsamość, tenanci i lokale, programy lojalnościowe, kampanie oraz raportowanie. Wewnętrznie rozmawiają po gRPC i stoją za jedną bramą. Wszystko, co jest tenant-scoped, nosi id tenanta w modelu danych, zamiast polegać na filtrze w runtime, który jedno zapomniane zapytanie obchodzi.

Co było naprawdę trudne

Ścieżka pracownika. Współdzielone urządzenie za ladą, pracownik, który mógł zacząć tego samego ranka, i klient, który poczeka jakieś dziesięć sekund. To przesunęło sporo złożoności wstecz, do API: idempotentne przyznawanie pieczątek, rozwiązywanie konfliktów dla paczek offline i ślad audytowy, który przeżyje przekazanie urządzenia komuś innemu w środku zmiany.