W skrócie
AutaCHF to marketplace dla polskich kupujących sprowadzających auta ze Szwajcarii. Zbudowaliśmy tożsamość marki od zera, zastąpiliśmy oryginalną stronę WordPress autorską platformą Next.js + Supabase, stworzyliśmy w pełni zautomatyzowany pipeline ofert i utrzymujemy cały system — 1,7 mln ofert rocznie, treści tłumaczone przez AI, monitoring w czasie rzeczywistym przez Telegram i pełna własność infrastruktury po stronie klienta.
Kontekst klienta
AutaCHF łączy polskich kupujących ze szwajcarskimi aukcjami samochodów w jednym miejscu. Rynek jest niszowy, ale aktywny: kupujący potrzebują dostępu do ofert w czasie rzeczywistym, zanim zakończą się aukcje, a przewaga cenowa pojazdów denominowanych we frankach zależy od szybkości i informacji.
Klient miał działający WordPress, ale uderzył w sufit — brak kontroli nad niestandardową logiką, brak możliwości automatyzacji tego, co wymagało automatyzacji, brak widoczności tego, co dzieje się z ofertami w skali.
Wyzwanie
WordPress nie był w stanie udźwignąć produktu, którego potrzebowali. Zarządzanie setkami tysięcy ofert z wielu źródeł, deduplikacja, tłumaczenie treści na bieżąco i udostępnianie ich przez szybki, mobilny interfejs — nic z tego nie było wykonalne bez budowy od zera.
Skala danych czyniła to nietrywialnym: 1,7 mln ofert przetwarzanych w ciągu jednego roku, w źródłach, które zmieniają strukturę bez ostrzeżenia. Każda luka w pipeline'ie oznacza przegapione aukcje i utracone przychody klienta.
Poza technologią klient chciał własności. Nie hostowanego produktu z vendor lock-in — systemu, który kontroluje, na infrastrukturze, którą posiada.
Nasze podejście
Zaczęliśmy od modelu danych i architektury pipeline'u, zanim napisaliśmy linijkę kodu frontendu. W tej skali poprawna logika przechowywania, deduplikacji i aktualizacji była fundamentem, na którym opierało się wszystko inne.
Frontend: Next.js App Router + Supabase. Server components dla wydajności, Supabase do autoryzacji i dostępu do danych w czasie rzeczywistym. Frontend na Vercelu, pipeline automatyzacji na dedykowanym VPS — czysty rozdział, klient ma na własność część krytyczną.
Monitoring był funkcją pierwszej klasy od pierwszego dnia. Każdy bieg pipeline'u raportuje do bota Telegram, więc klient wie dokładnie, co się wykonało, co zawiodło i czemu trzeba się przyjrzeć — bez otwierania jakiegokolwiek dashboardu.
Co zrobiliśmy
Tożsamość marki
Tożsamość wizualna i logo zbudowane od zera — logotyp, znak graficzny, paleta kolorów, wytyczne użycia.
Migracja z WordPressa
Platforma zbudowana od nowa: Next.js (App Router) + Supabase. Niestandardowa autoryzacja, schemat ofert, panel admina, flow kontaktu. Istniejąca baza użytkowników zmigrowana bez utraty danych.
Pipeline ofert w skali
Zautomatyzowany pipeline Node.js, który ciągle pobiera, deduplikuje i zapisuje oferty. Kluczowe wyzwania: obsługa źródeł zmieniających strukturę bez uprzedzenia, deduplikacja na ponad 1,7 mln rekordach, przetwarzanie i przechowywanie obrazów w skali.
Monitoring przez Telegram
Każdy bieg pipeline'u wysyła ustrukturyzowane wyniki do bota Telegram — znalezione oferty, nowe vs zaktualizowane, błędy. Klient monitoruje wszystko w czasie rzeczywistym, bez dodatkowych narzędzi.
Własność infrastruktury
Przenieśliśmy pipeline z Google Cloud na dedykowany VPS, którego klient jest w pełni właścicielem. Niższe koszty bieżące, brak zależności od dostawcy chmury, pełna kontrola.
Panel administracyjny
Rozbudowywany w wielu iteracjach: zakresy cen w czasie rzeczywistym na ofertę, zarządzanie ofertami masowo, bezpośrednie linki do źródeł, zarządzanie użytkownikami, kalkulator walut, ustawienia mobilne.
Platforma wielojęzyczna
Pełna wielojęzyczność PL/EN — interfejs przetłumaczony, statyczne treści zlokalizowane, oferty tłumaczone on-demand przez GPT-4o mini i cache'owane. Uruchomiliśmy jako drugi powiązany portal (PojazdyCH) z automatycznym cross-postowaniem ofert.
Rezultaty
Wnioski
Przy 1,7 mln ofert rocznie najbardziej liczą się nudne rzeczy — logika deduplikacji, obsługa błędów, monitoring. Bot Telegram nie był „miło mieć” — to dzięki niemu wyłapujemy awarie pipeline'u w minuty, zamiast odkrywać je następnego dnia. Zbuduj observability, zanim go potrzebujesz.
Pracujesz nad podobnym projektem?
Skontaktuj się