Umów konsultację

Bezpłatna wycena w 24h

Giełda Biomasy, Pelletu, Trociny, Zrębki — case study 4 portali e-commerce na Next.js 15

Giełda Biomasy, Pelletu, Trociny, Zrębki — case study 4 portali e-commerce na Next.js 15

Case Study16 czerwca 202613 min czytania

Polski rynek paliw biomasowych — pellet drzewny, zrębka, trociny — ma skalę liczoną w miliardach złotych obrotu rocznie. Mimo tej wielkości handel pozostaje rozproszony: setki małych dostawców regionalnych, dziesiątki sklepów internetowych prowadzonych przez producentów, nieformalne grupy w mediach społecznościowych. Brakowało centralnego miejsca, w którym kupujący mógłby porównać oferty z całego kraju według ujednoliconych parametrów technicznych — klasy, kaloryczności, wilgotności, certyfikacji. Zbudowaliśmy je. Cztery wertykały, jedna baza danych, monorepo Next.js 15.

Projekt
  • Klient: Green Fuel Trading sp. z o.o.
  • Branża: Paliwa biomasowe — pellet drzewny, zrębka, trociny
  • Zakres: strategia, design, deweloperstwo, SEO, integracje (płatności, OAuth, transactional email)
  • Stos: Next.js 15 · React 19 · TypeScript · Tailwind v4 · PostgreSQL (Neon) · Vercel · PayU · MapLibre · Resend · GA4
  • Wynik: 4 serwisy produkcyjne live · 120+ artykułów SEO · 200+ stron lokalnych · CWV w zielonej strefie

Wyzwanie — agregacja rozproszonego rynku według wspólnych norm

Klient potrzebował platformy, która agreguje ofertę z całego kraju, prezentuje parametry zgodne z polskimi normami (PN‑EN ISO 17225‑2:2021‑10) oraz obowiązującym rozporządzeniem (Dz.U. 2025 poz. 618 dla pelletu klasy A1/A2), i obsługuje pełną ścieżkę zakupową — od wyszukania, przez zapytanie ofertowe i negocjację, po płatność online.

Dodatkowo: cztery odrębne wertykały (biomasa ogólnie, pellet, zrębka, trociny) miały działać jako osobne marki z własną tożsamością wizualną i pozycjonowaniem SEO, ale opierać się na wspólnej bazie danych i wspólnym koncie sprzedawcy. Jedno konto producenta, jedna oferta — wiele wertykałów, w których może się pokazać.

Zakres prac — 8 etapów

  1. Strategia i pozycjonowanie — analiza rynku, definicja czterech wertykałów, mapa konkurencji.
  2. Tożsamość wizualna — brandbook każdej z marek, system kolorystyczny, logotypy (sygnet + pełna forma).
  3. Architektura informacji — projekty UX/UI dla mobile i desktop, prototypy interakcji.
  4. Implementacja frontendowa — Next.js 15 App Router, React 19, Tailwind CSS v4, system designu w pakiecie współdzielonym.
  5. Backend i baza danych — schemat Postgres, ORM‑free SQL przez Neon serverless, migracje idempotentne.
  6. Integracje — uwierzytelnianie (Google OAuth + JWT), płatności (PayU), poczta transakcyjna (Resend), analityka (GA4 + Consent Mode v2).
  7. Treści i SEO — 120+ artykułów blogowych w czterech wertykalach, 200+ stron lokalnych generowanych z bazy danych.
  8. Wdrożenie, testy, optymalizacja — cztery osobne projekty na Vercel, ciągłe wdrażanie, optymalizacja Core Web Vitals.

Główne funkcjonalności

Dla kupującego

  • Wyszukiwarka ofert z filtrowaniem po kategorii, województwie, klasie jakości i parametrach,
  • Interaktywna mapa Polski z 16 województwami i geolokalizowanymi ofertami,
  • Karta produktu z pełną specyfikacją techniczną oraz tabelą wymagań prawnych dla danej klasy,
  • Alerty cenowe z modalem rozpoznającym województwo na podstawie kodu pocztowego,
  • Zapytanie ofertowe (RFQ) z routingiem na skrzynkę sprzedawcy,
  • Czat wbudowany w platformę,
  • Płatności online: BLIK, karty Visa i Mastercard, szybkie przelewy, Google Pay, Apple Pay.

Dla sprzedawcy

  • Rejestracja konta firmowego z weryfikacją NIP, REGON, statusu VAT,
  • Kreator ofert z polami branżowymi specyficznymi dla każdej kategorii paliwa,
  • Panel zarządzania ofertami i zapytaniami,
  • Czat z kupującymi,
  • Dashboard z historią aktywności.

Dla administratora

  • Pełen panel moderacji ofert, sprzedawców i kont,
  • Kolejka blogowa współdzielona między czterema serwisami,
  • Statystyki i metryki w czasie rzeczywistym.

Wyzwania techniczne i sposób ich rozwiązania

Cztery domeny, jedna baza danych

Każdy z czterech serwisów ma własną tożsamość wizualną, osobny zestaw treści blogowych i osobny canonical URL, ale dzieli z pozostałymi wspólną bazę użytkowników, sprzedawców i ofert. Rozwiązaliśmy to przez monorepo z czterema aplikacjami Next.js i wspólnym pakietem UI (ui-core), który zawiera komponenty, typy domenowe i logikę bazodanową. Każda aplikacja deployowana jest osobno na Vercel z własną domeną, ale wszystkie korzystają z tej samej instancji Neon Postgres. Dyskryminacja kategorii (pellet / zrębka / trociny / biomasa) odbywa się na poziomie zapytań SQL i routing per domena.

Programmatic SEO na 200+ stronach

Generujemy automatycznie strony lokalne dla każdej kombinacji województwa, kategorii paliwa i wertykalu. Każda strona ma unikalny tytuł, opis, listę ofert dostępnych w danej lokalizacji, średnie ceny rynkowe i mapę. Treść jest unikalna (nie szablonowa) dzięki dynamicznym danym z bazy. Strony są generowane statycznie z fallbackiem ISR dla świeżo dodanych ofert. Bez tego mechanizmu pozyskanie ruchu wyszukiwarkowego wymagałoby ręcznego pisania 200+ stron i utrzymywania ich aktualności.

Mapa interaktywna z setkami markerów

MapLibre GL JS jako silnik renderowania map wektorowych (open source, brak vendor lock‑in), CARTO jako dostawca mapy bazowej, GeoJSON granic województw jako warstwa nakładana, klasteryzacja markerów przy większej liczbie ofert. Wszystko zoptymalizowane pod mobile — mapa działa płynnie na ekranie 320 px.

Compliance prawno‑jakościowy

W maju 2025 roku weszło w życie rozporządzenie Ministra Klimatu i Środowiska określające wymagania jakościowe dla pelletu drzewnego w obrocie. Każda karta produktu pelletu zawiera pełną tabelę 12 parametrów wymaganych przez rozporządzenie z wyróżnieniem klasy A1 vs A2, plus odwołanie do polskiej normy PN‑EN ISO 17225‑2:2021‑10. Wszystkie wartości są edytowalne z poziomu panelu sprzedawcy.

Płatności online zgodne z PSD2

Integracja PayU REST API (OpenPayU 2.1): uwierzytelnianie OAuth2 z cache'owaniem tokenu, generowanie zamówień, weryfikacja podpisu IPN (MD5 sender check w stałym czasie), persistencja stanu płatności w bazie danych z pełnym śladem audytowym (raw notification w polu JSONB). 3D Secure 2 i Strong Customer Authentication po stronie PayU, my obsługujemy tylko stan zamówienia i komunikację z klientem.

Wydajność i dostępność

Core Web Vitals w zielonej strefie na wszystkich kluczowych stronach:

  • LCP poniżej 2,5 s,
  • INP poniżej 200 ms,
  • CLS poniżej 0,1.

Web Vitals monitorowane są w czasie rzeczywistym poprzez własną tabelę zdarzeń serwerowych. Pełna zgodność z WCAG na poziomie AA, focus rings, skip linki, semantyczny HTML.

Max Mazurkiewicz

Max Mazurkiewicz

Founder

POTRZEBUJESZ SPERSONALIZOWANEJ WYCENY?

Chcesz się na coś zdecydować ale od nadmiaru możliwości boli głowa? Skontaktuj się z nami, dobierzemy rozwiązanie do potrzeb Twojej firmy.

Umów się na konsultację

Stos technologiczny

Warstwa Technologia Uzasadnienie
FrameworkNext.js 15 (App Router) + React 19SSR pod SEO, SSG pod wydajność
JęzykTypeScript (strict)Eliminacja całych klas błędów na etapie kompilacji
StyleTailwind CSS v4CSS‑first, brak narzutu runtime
Baza danychPostgreSQL na Neon (serverless)Sprawdzona baza, autoskalowanie, brak administracji
HostingVercelGlobalna sieć dystrybucji, funkcje serwerowe na krawędzi
PłatnościPayU REST API (OpenPayU 2.1)Krajowy operator regulowany przez KNF
UwierzytelnianieGoogle OAuth 2.0 + JWTLogowanie bez hasła, sesje szyfrowane kryptograficznie
Poczta transakcyjnaResendWysoka dostarczalność, branded templates
AnalitykaGA4 + zdarzenia serwer‑sidePełna obserwowalność lejka, zgodność RODO
MapaMapLibre GL JSOpen source, brak uzależnienia od dostawcy
BezpieczeństworeCAPTCHA v3, rate limiting, SHA‑256Ochrona przed botami, anonimizacja IP

Treści i SEO

  • 120+ artykułów blogowych rozłożonych między czterema wertykalami, każdy z dedykowanym autorem branżowym i kategorią tematyczną,
  • Wewnętrzne linkowanie sterowane regułami: artykuł o normie ENplus linkuje do strony kategorii, strona kategorii linkuje do najlepszych ofert, oferty linkują do profilu sprzedawcy,
  • 200+ stron lokalnych generowanych z bazy danych z unikalnym kontentem per województwo i kategoria,
  • Schema.org / JSON‑LD dla każdej oferty (typ Product), bloga (typ Article), sprzedawcy (typ Organization),
  • Sitemap XML automatyczna, robots.txt, Open Graph + Twitter Cards na każdej stronie.

Rezultat

  • 4 serwisy produkcyjne wdrożone na osobnych domenach: gieldabiomasy.pl, gieldapelletu.pl, gieldazrebki.pl, gieldatrociny.pl,
  • Pełna ścieżka zakupowa od wyszukania, przez zapytanie ofertowe, czat, po płatność online z PayU,
  • Compliance z polskimi normami i prawem — gotowe pod realny obrót handlowy (rozporządzenie z 2025, norma PN‑EN ISO 17225‑2),
  • Skalowalna architektura serverless — brak kosztów stałych infrastruktury, koszty zależne od ruchu,
  • Performance w zielonej strefie Core Web Vitals — LCP <2,5 s, INP <200 ms, CLS <0,1,
  • Mobile‑first — pełna funkcjonalność na ekranach od 320 px.

Kontekst — szersze portfolio biomasowe Max Digital

Giełda Biomasy zamyka klamrą portfolio projektów Max Digital w branży paliw odnawialnych. Wcześniejsze realizacje:

  • biomasstrust.eu — strona europejskiej organizacji zajmującej się biomasą i energią odnawialną, projekt firmowy z silną tożsamością wizualną pod B2B EU,
  • biomasaportal.pl — polski portal branżowy biomasy.

Cztery portale giełdowe są jakościowym skokiem w porównaniu do tych projektów: pełny e‑commerce, własna integracja PayU, programmatic SEO, monorepo i compliance ze świeżym rozporządzeniem. To projekt, który łączy strategię produktową, design systemowy i twardy backend handlowy — czego potrzebuje każdy poważny gracz B2B chcący zbudować przewagę technologiczną w niszy.

Wnioski

Trzy rzeczy, które ten projekt udowodnił:

  1. Monorepo + wspólny pakiet UI to realne narzędzie skali. Cztery niezależne marki na tym samym kodzie utrzymują spójność produktową i obniżają koszt rozwoju o połowę względem czterech osobnych stacków.
  2. Programmatic SEO zadziała tylko wtedy, gdy treść jest dynamicznie unikalna, nie szablonowa. 200 stron typu „pellet województwo X" z tym samym akapitem to thin content. Te same 200 stron z aktualnymi ofertami, średnimi cenami i mapą — to realny ruch i realne leady.
  3. Compliance to feature, nie obciążenie. Tabela 12 parametrów z odwołaniem do rozporządzenia z 2025 i normy PN‑EN ISO 17225‑2 to nie tylko zgodność z prawem — to różnicownik wobec konkurencji, która sprzedaje pellet bez podawania klasy.

Szukasz partnera technologicznego, który potrafi zbudować poważny portal e‑commerce z prawdziwym backendem handlowym, a nie kolejny landing na WordPressie? Aplikacje webowe i strony Next.js Max Digital — w tym samym stacku, na którym powstała Giełda Biomasy.

Najczęściej zadawane pytania

Każdy z czterech wertykałów (biomasa ogólnie, pellet, zrębka, trociny) celuje w inny zestaw fraz wyszukiwawczych i inny profil kupującego. „Pellet drzewny EN A1" i „trociny iglaste suche luzem" to dwa różne rynki z różnymi kupcami i różną sezonowością. Cztery osobne marki z własną tożsamością mają mocniejszą widoczność SEO niż jedna domena rozrzucona po kategoriach. Współdzielona baza danych i monorepo Next.js sprawiają, że koszt utrzymania jest zbliżony do jednego serwisu.

Sprzedawca rejestruje konto raz — z weryfikacją NIP, REGON i statusu VAT — i ta sama oferta może pojawić się we wszystkich wertykałach, w których ma sens (np. producent pelletu publikuje ofertę na gieldapelletu.pl i równolegle na gieldabiomasy.pl). Wspólna baza PostgreSQL na Neon, dyskryminacja kategorii na poziomie SQL i routingu per domena. Kupujący loguje się przez Google OAuth, sesje JWT szyfrowane kryptograficznie.

Programmatic SEO to generowanie podstron z bazy danych według kombinacji parametrów — w tym projekcie: województwo × kategoria paliwa × wertykal. Strony są generowane statycznie z ISR (Next.js), więc indeksują się jak zwykłe podstrony, a content jest dynamicznie unikalny: lista realnych ofert w danym województwie, średnie ceny rynkowe, mapa z markerami. To nie thin content „strona = kopia + nazwa miasta", tylko prawdziwe dane.

MapLibre GL JS to fork Mapbox GL JS sprzed zmiany licencji — w pełni open source, bez vendor lock-in i bez kosztów per ładowanie mapy. Renderuje mapy wektorowe, klasteryzuje markery przy dużej liczbie ofert, działa płynnie na mobile od 320 px. Mapę bazową pobieramy z CARTO, granice województw z własnego GeoJSON. Łączny koszt mapy: bliski zera, niezależny od ruchu.

W maju 2025 weszło w życie rozporządzenie określające wymagania jakościowe dla pelletu drzewnego w obrocie (Dz.U. 2025 poz. 618). Każda karta produktu pelletu pokazuje pełną tabelę 12 parametrów wymaganych rozporządzeniem (kaloryczność, wilgotność, popiół, średnica, długość itp.) z wyróżnieniem klasy A1 vs A2, plus odwołanie do polskiej normy PN-EN ISO 17225-2:2021-10. Sprzedawca edytuje te wartości z poziomu panelu, kupujący ma natychmiastową weryfikację, czy oferta spełnia wymagania prawa.

Teoretycznie tak — w praktyce dla projektu tej skali to zły wybór. WordPress + WooCommerce nie obsłuży natywnie programmatic SEO 200 stron lokalnych generowanych z bazy, integracji PayU PSD2 wymaga ciężkich wtyczek z własną architekturą bezpieczeństwa, a Core Web Vitals na czterech osobnych serwisach WordPress wymagałoby ciągłego tuningu cache. Next.js 15 + React 19 + Postgres na Neon to architektura, w której taki produkt powstaje raz, a skaluje się sam.

Max Mazurkiewicz
Max Mazurkiewicz
Founder
Digital marketing expert