DEVCRAFTED.PL
Case study

Platforma SaaS multi-tenant w Laravelu: od instalacji u klientów do jednego systemu

System SaaS dla wielu organizacji (multi-tenant)

Projekt objęty NDA

O projekcie

Platforma, na której restauracja uruchamia własne zamówienia online: stronę, panel, płatności i marketing, także dla kilku lokali i na własnej domenie. Kilkadziesiąt osobnych instalacji przeniosłem do jednego systemu z samodzielną rejestracją nowych klientów i abonamentem.

Wyzwanie

System zamówień online dla gastronomii, który przez kilka lat obsłużył ponad 100 tys. zamówień, działał jako osobna instalacja u każdego klienta – kilkadziesiąt instalacji na dwóch serwerach. Celem było przejście na model SaaS: jeden kod i jedna baza dla wszystkich lokali, samodzielna rejestracja z abonamentem, własne domeny klientów i bezpieczne przeniesienie danych z istniejących instalacji – bez ryzyka mieszania danych między klientami i bez wstrzymywania rozwoju produktu.

Moja rola

  • Backend Developer
  • Frontend Developer
  • Optymalizacja wydajności
  • Wdrożenie produkcyjne

Projekt objęty NDA: bez nazwy klienta, zrzutów ekranu i kodu.

Zakres funkcjonalny

  • Własna domena i zamówienia online
    Restauracja uruchamia własne zamówienia online na subdomenie albo własnej domenie.
  • Onboarding i subskrypcje
    Automatyczny onboarding nowych klientów, zarządzanie subskrypcjami oraz wieloma lokalami z jednego konta (model franczyzowy).
  • Panel administracyjny
    Zarządzanie produktami, kategoriami, zamówieniami, klientami, marketingiem, programem lojalnościowym, CMS i wyglądem sklepu.
  • Sklep i płatności
    Obsługa zamówień online, koszyka, płatności elektronicznych, kuponów rabatowych oraz historii zamówień.
  • Integracje zewnętrzne
    Płatności online od wielu operatorów, powiadomienia SMS, e-mail i WebPush oraz integracje z usługami zewnętrznymi.
  • Architektura multi-tenant
    Własne domeny klientów, migracja danych z instalacji lokalnych do SaaS oraz izolacja danych między tenantami.

Rozwiązanie

Architektura multi-tenant w jednej bazie

Zaprojektowałem i zbudowałem własną warstwę multi-tenancy w Laravelu, bez zewnętrznych pakietów: klient rozpoznawany po adresie (subdomena lub własna domena), automatyczna izolacja danych na poziomie modeli i uprawnienia liczone osobno dla każdego lokalu.

Migracja danych z instalacji lokalnych do SaaS

Zaprojektowałem i zbudowałem mechanizm przenoszenia danych: API synchronizacji zabezpieczone tokenem, silnik sterowany rejestrem tabel, mapowanie identyfikatorów, kolejność zgodna z relacjami w bazie i wznawianie po przerwaniu. Tak przeniosłem do SaaS kilkudziesięciu klientów z dwóch serwerów.

Własne domeny klientów

Każdy klient dostaje subdomenę, a w zależności od planu może podpiąć własną domenę. Domeny są weryfikowane automatycznie i cyklicznie, z pełną kontrolą certyfikatu SSL.

Abonamenty i panel operatora platformy

Plany z różnym zakresem funkcji, płatności cykliczne, przypomnienia, blokada po wygaśnięciu abonamentu, faktury i przedpłacony portfel SMS – wszystko zarządzane z panelu operatora.

API dla aplikacji mobilnej

REST API dla aplikacji personelu: parowanie urządzenia kodem QR, aktualizacje zamówień w czasie rzeczywistym przez WebSocket, uprawnienia na poziomie endpointów i osobne limity żądań.

Import oferty z pomocą AI

Import menu z tekstu lub zdjęcia z wykorzystaniem modeli językowych, z wymuszoną strukturą danych oraz podglądem i edycją przed zapisem.

Efekt

  • Kilkudziesięciu klientów z dwóch serwerów działa w jednym systemie, z danymi każdego lokalu oddzielonymi od pozostałych.
  • Ponad 1500 testów automatycznych uruchamia się w pipeline CI.
Jak działa import oferty z AI

Architektura

  • Modularny monolit Laravel z podziałem na domeny: tenancy, płatności, synchronizacja danych, zamówienia, konta i panel platformy.
  • Serwisy za interfejsami rejestrowanymi w kontenerze, walidacja w Form Requests, repozytoria i stałe domenowe zamiast „magicznych” wartości.
  • Osobne obszary z własnymi uprawnieniami: sklep klienta, panel lokalu, panel właściciela wielu lokali, panel operatora platformy i API mobilne.
  • Sześć bramek płatności (m.in. Tpay, PayU, Przelewy24, PayNow, PayPal) za wspólną warstwą z ochroną przed zdublowanymi powiadomieniami (webhookami).
  • Powiadomienia e-mail, SMS i WebPush oraz aktualizacje zamówień w czasie rzeczywistym przez WebSocket.
  • Zadania cykliczne w schedulerze i cache modeli w Redis.

Mój wkład

  • Zaprojektowanie i zbudowanie warstwy SaaS od podstaw – backend i frontend: multi-tenancy, onboarding i abonamenty, migracja danych, płatności i wdrożenia produkcyjne.
  • Ponad 1500 testów automatycznych napisanych od zera i uruchamianych w pipeline CI.
  • Pipeline CI/CD w GitLab: testy, analiza statyczna i automatyczne wdrożenia na kolejne środowiska.
  • Praca w modelu AI-first: specyfikacje i plany przed implementacją, agent kodujący z regułami projektu, code review i dokumentacja zmian – decyzje techniczne zawsze po mojej stronie.

Technologie

  • Laravel
  • PHP
  • MySQL
  • Multi-Tenant
  • Redis
  • REST API
  • WebSocket
  • WebPush
  • Scheduler
  • JavaScript
  • PHPUnit
  • GitLab CI/CD
  • Tpay
  • PayU
  • Przelewy24
  • PayNow
  • PayPal
  • Claude Code
  • ChatGPT
  • Stitch

Masz system instalowany osobno u każdego klienta? Napisz, ile jest instalacji. Odpowiem w ciągu 24 godzin.

Napisz do mnie
Autopromocja

Nabyto.pl – e-booki i workbooki PDF po polsku

Konkretne materiały w PDF: pobierasz od razu po zakupie, drukujesz albo wypełniasz na ekranie. Bez DRM, bez subskrypcji i bez zakładania konta.

Odwiedź Nabyto.pl
Kontakt

Masz projekt albo problem z aplikacją? Napisz, odpowiem w ciągu 24 godzin.

Napisz do mnie
Telefon