DEVCRAFTED.PL
Case study

Platforma marketplace w Laravelu: portal łączący klientów z usługodawcami, placówkami i firmami pośredniczącymi

Platforma łącząca użytkowników i usługodawców

Projekt objęty NDA

O projekcie

Platforma typu marketplace łącząca klientów z usługodawcami, placówkami partnerskimi i firmami pośredniczącymi. System obejmuje rozbudowaną część publiczną pod SEO, osobne panele dla każdego typu konta oraz panel administracyjny, w którym zapytanie klienta przechodzi drogę od kwestionariusza potrzeb, przez dobór propozycji, po rezerwację i zaakceptowany kontrakt.

Wyzwanie

Klienci szukający usługi, usługodawcy, placówki partnerskie i firmy pośredniczące potrzebowały jednego portalu, w którym zapytanie przechodzi całą drogę: od kwestionariusza potrzeb, przez dobór propozycji, po rezerwację i zaakceptowany kontrakt. Platforma miała obsłużyć kilka typów kont z różnymi uprawnieniami, działać w trzech językach, chronić konta z danymi osobowymi i jednocześnie pozyskiwać ruch z wyszukiwarki. Zbudowałem ją samodzielnie, od pustego projektu Laravel.

Moja rola

  • Backend Developer
  • Frontend Developer
  • Wdrożenie produkcyjne

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

Zakres funkcjonalny

  • Marketplace usług
    Zapytania klientów i propozycje usługodawców oraz placówek dobierane przez administratora z automatycznym filtrem języka i dostępności.
  • Rejestracja i bezpieczeństwo
    Rejestracja z aktywacją e-mail, odzyskiwanie hasła, 2FA, zaufane urządzenia i czasowa blokada po nieudanych próbach logowania.
  • Panele dla różnych ról
    Osobne panele dla klientów, usługodawców, firm pośredniczących (w tym zarządzanie kontami usługodawców) i administratorów.
  • Rezerwacje i kontrakty
    Rezerwacja propozycji przez klienta, akceptacja lub odrzucenie przez usługodawcę albo firmę oraz statusy zapytań od aktywnego do archiwalnego.
  • Panel administracyjny
    Zarządzanie zapytaniami, propozycjami, użytkownikami, partnerami, placówkami, lokalizacjami i udogodnieniami.
  • Część publiczna i powiadomienia
    Landing pages pod SEO, blog, katalog usług partnerskich, powiadomienia e-mail, Web Push i w czasie rzeczywistym oraz trzy wersje językowe.

Rozwiązanie

Ścieżka od zapytania do kontraktu

Klient wypełnia kwestionariusz potrzeb i wskazuje termin, a zapytanie przechodzi przez jasne etapy: aktywne, oczekujące na decyzję, zaakceptowane, w realizacji i archiwalne. Każda zmiana statusu wysyła powiadomienie do klienta, usługodawcy i administratora.

Dobór propozycji z kontrolą dostępności

Administrator przypisuje do zapytania usługodawców i placówki, a system od razu zawęża listę kandydatów do osób posługujących się językiem klienta i dostępnych w danym terminie. Klient widzi wszystkie propozycje na jednej liście z filtrami i może je zarezerwować.

Panele dla każdego typu konta

Osobne panele dla klientów, usługodawców, firm pośredniczących i administratora. Firma może zarządzać kontami swoich usługodawców i ich kontraktami albo składać zapytania w imieniu klientów, a partner zgłoszony przez formularz dostaje konto z linkiem aktywacyjnym.

Bezpieczeństwo kont

Uwierzytelnianie dwuskładnikowe kodem e-mail, zaufane urządzenia, powiadomienie o logowaniu z nowego urządzenia i czasowa blokada po nieudanych próbach. Do tego nagłówki CSP, reCAPTCHA, filtr wulgaryzmów w formularzach i kontrola dostępu do plików.

Powiadomienia w czasie rzeczywistym

E-mail, Web Push i powiadomienia w panelu na żywo przez WebSocket, z centrum powiadomień (przeczytane i nieprzeczytane). Wysyłka idzie przez kolejkę z limitem, dopiero po zapisaniu zmian w bazie.

Część publiczna pod SEO w trzech językach

Landing pages pod lokalne i usługowe frazy wyszukiwania, strony dla każdej grupy użytkowników, katalog usług partnerskich z formularzem zamówienia oraz blog na WordPressie zintegrowany z aplikacją. Interfejs i treści w trzech wersjach językowych.

Architektura

  • Modularny monolit Laravel podzielony na kilkanaście modułów domenowych, m.in. autoryzacja, panele ról, placówki, powiadomienia, pliki, część publiczna i blog.
  • W każdym module ten sam układ: serwisy za interfejsami w kontenerze, repozytoria, Form Requests, obiekty danych (DTO) i stałe domenowe zamiast „magicznych” wartości.
  • Formularze definiowane po stronie serwera i renderowane w przeglądarce, ze wspólnymi polami i regułami walidacji oraz generatorem Artisan dla nowych formularzy.
  • Role i uprawnienia oparte na Spatie Permission, sesja web z tokenami API (Laravel Passport) oraz middleware pilnujące 2FA, aktywności konta i ukończenia rejestracji.
  • Powiadomienia kolejkowane z limitem wysyłek: e-mail, Web Push, baza danych i WebSocket (Laravel Echo).
  • Zadania cykliczne w schedulerze (tokeny, nieukończone rejestracje, blokady kont, pliki, kolejka), cache modeli w Redis i blog na WordPressie czytany przez Eloquent.

Mój wkład

  • Samodzielne zaprojektowanie i zbudowanie całej platformy od pustego projektu Laravel: backend, frontend, baza danych i część publiczna.
  • Kilkanaście modułów, ponad 100 tras i około 200 widoków, w tym panele dla klientów, usługodawców, firm pośredniczących i administratora.
  • Własna lekka biblioteka CSS i JavaScript, na której oparty jest cały interfejs: formularze, tabele, okna, powiadomienia i obsługa czasu rzeczywistego.
  • Wielojęzyczność od podstaw: trzy wersje językowe w interfejsie, treściach w bazie i na blogu.

Technologie

  • Laravel
  • PHP
  • MySQL
  • Redis
  • Laravel Modules
  • Laravel Passport
  • Spatie Permission
  • WebSocket
  • WebPush
  • Blade
  • JavaScript
  • jQuery
  • WordPress
  • 2FA
  • Queue
  • Scheduler

Łączysz klientów z wykonawcami w mailach i arkuszach? Napisz, jak to dziś wygląda. 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