VulCode

VulCode

Integracje panelu klienta VulCode: kanał usługa-usługa, którym panel zmienia plan, zawiesza, wznawia i anuluje strony VulBio, a nocna rekoncyliacja wyrównuje każdy zgubiony sygnał. Do tego licencja Flaem wydawana z gotową komendą instalacji, doładowania portfela przez Stripe oraz powiadomienia e-mailem, wiadomością na Discordzie i przez Web Push według preferencji klienta. Błędy aplikacji trafiają na kanał zespołu bez danych osobowych.

TypIntegracje panelu klienta
BackendNode.js, TypeScript, Express
PłatnościStripe
PowiadomieniaE-mail, Discord, Web Push
VulCode

Wprowadzenie

Panel klienta VulCode to miejsce, w którym klient software house'u widzi swoje projekty, płatności, zgłoszenia i program partnerski. Panel sprzedaje też subskrypcje produktów, które żyją jako osobne usługi: strony VulBio, licencje Flaem, a obok nich Atrium i Lokal. Każdy z nich musi wiedzieć, jaki plan opłacił klient i czy jego konto nie jest zawieszone.

Do tego dochodzą pieniądze, które przychodzą przez Stripe, i powiadomienia, które muszą trafić do klienta tam, gdzie naprawdę je zobaczy. Ta strona opisuje, jak panel rozmawia z resztą świata.

Kanał usługa-usługa

Panel mówi VulBio o zmianie planu, zawieszeniu, wznowieniu i anulowaniu strony. Wywołania idą ze wspólnym sekretem w nagłówku X-Service-Token, a kanał jest zamknięty domyślnie: bez skonfigurowanego sekretu jest wyłączony, a nie otwarty.

Żadne z tych wywołań nie może wywrócić operacji w panelu. Anulowanie subskrypcji ma się udać także wtedy, gdy VulBio akurat nie odpowiada, dlatego błąd jest zapisywany, a nie rzucany dalej. Panel odróżnia przy tym klienta, który nigdy nie założył strony, od pomyłki w adresie usługi: za brak strony uznaje tylko jawną odpowiedź VulBio, a nie samo 404.

Atrium i Lokal wystawiają ten sam kontrakt: plan z datą końca opłaconego okresu, zawieszenie z powodem i wspólny sekret w tym samym nagłówku.

Nocna rekoncyliacja

Każdy pojedynczy sygnał może zginąć: usługa nie odpowiada, sieć padła, trwa wdrożenie. Bez siatki bezpieczeństwa jeden zgubiony sygnał oznacza stronę działającą za darmo bez końca.

Panel jest źródłem prawdy

co noc przechodzi po wszystkich swoich zamówieniach VulBio.

Wylicza stan, który powinien obowiązywać

plan, datę ważności razem z okresem łaski, zawieszenie albo anulowanie.

Wypycha go do VulBio

operacje są idempotentne, więc powtórzenie niczego nie psuje.

Podsumowuje przebieg

ile zamówień sprawdził, ile anulował, zawiesił i zsynchronizował, a ile się nie udało.

Produkt wyłączony w panelu nie istnieje dla VulBio tak samo jak dla klienta: panel nie wysyła mu żadnego sygnału, a stan wyrówna rekoncyliacja po ponownym włączeniu produktu.

Licencja Flaem i płatności

Klient, który kupuje licencję Flaem, dostaje w panelu gotową komendę instalacji z tokenem licencji. Token jest sprawdzany w chwili, gdy zespół go zapisuje, i drugi raz przy składaniu komendy, bo trafia do powłoki roota na maszynie klienta, a znak spoza dozwolonego alfabetu mógłby przerwać argument.

Portfel doładowuje się przez Stripe. Z tego samego portfela korzystają odnowienia i program partnerski, który wypłaca prowizje prosto na saldo.

Powiadomienia

Każde zdarzenie warte powiadomienia przechodzi przez jedno miejsce, które pilnuje preferencji klienta: kategorii (projekty, zgłoszenia, płatności, program partnerski, aktualności i sprawy konta) i kanałów, którymi chce je dostawać.

Kanały powiadomień

KanałJak trafia do klienta
E-mailWiadomość HTML w barwach marki
DiscordWiadomość prywatna od bota VulCode
Web PushPowiadomienie w przeglądarce i w panelu zainstalowanym na telefonie
PanelLista powiadomień w samym panelu

Web Push przyjmuje tylko adresy znanych usług push przeglądarek, a pilność zależy od kategorii. Odpowiedź na zgłoszenie, pieniądze i sprawy konta budzą telefon, aktualizacja projektu poczeka, aż telefon sam się obudzi, a stare ogłoszenie w ogóle nie jest warte wibracji. Zespół dostaje zdarzenia z panelu na swoim kanale Discorda.

Raporty błędów i poczta zespołu

Nieprzechwycone błędy aplikacji trafiają na kanał zespołu na Discordzie. Raportowanie nigdy nie rzuca wyjątku do aplikacji i nie trzyma procesu przy życiu, każdy tekst przechodzi przez czyszczenie danych osobowych, a ten sam błąd nie zalewa kanału: ma jedną wiadomość, edytowaną licznikiem wystąpień.

Skrzynki pocztowe zespołu pilnuje osobny bot, który czyta je przez IMAP i zgłasza nową pocztę na Discordzie, z filtrem kierunku dla każdej skrzynki, listą wykluczeń i historią, dzięki której ta sama wiadomość nie przychodzi dwa razy.

Pytania o VulCode

Więcej projektów

Inne realizacje z tej samej kategorii - zobacz, jak podchodzimy do podobnych wyzwań.

Masz podobny projekt?

Napisz do nas - wycena jest bezpłatna i wraca w godzinę.