TL;DR — Gyors összefoglaló
- Ügyfél: extrahasznaltruha.hu — B2B és B2C használt ruha kereskedés
- Stack: Next.js 15 + React 19 + PostgreSQL + Stripe + Tailwind CSS 4
- Fejlesztési idő: 14 nap (AiSolve.me garancia teljesítve)
- Lighthouse pontszám: 94 Performance / 98 Accessibility / 100 Best Practices / 97 SEO
- Eredmény: 3 hónappal launch után +62% organikus forgalom, 23% kosárelhagyás csökkentés
Projekt háttér: Ki és miért?
Az extrahasznaltruha.hu egy Nyíregyháza-közeli használt ruha kereskedő vállalkozás, amely egyidejűleg kiszolgál B2B nagykereskedői (ruhaipari feldolgozók, secondhand üzletek, export partnerek) és B2C kiskereskedelmi (végfelhasználó vásárlók) szegmenst. A két üzleti modell párhuzamos kiszolgálása rendkívüli architektúrális kihívást jelent.
Az ügyfél korábbi megoldása egy elavult WordPress + WooCommerce alapú rendszer volt, amely egyre lassabban töltött be, nem kezelte megfelelően a B2B árazást, és a Stripe integrációja megbízhatatlan volt — fizetési visszaigazolások rendszeresen elmaradtak. Az új webshoppal szemben három alapvető elvárás fogalmazódott meg:
- Nagy készlet (500+ termék) kezelése villámgyors betöltéssel
- B2B és B2C ügyfelek egyidejű kiszolgálása egyetlen platformon, különböző árazással
- Megbízható, webhook-alapú Stripe fizetési folyamat, automatikus B2B számlázással
Kulcsmutatók a launch után
Architektúra döntések részletesen
Miért Next.js? — SSR és ISR kombinációja
A webshop terméklapjai ISR-rel (Incremental Static Regeneration) épülnek fel: az oldal statikusan kiszolgált, de 60 másodpercenként újragenerálódik a háttérben, ha megváltozott a készlet. Ez azt jelenti, hogy a felhasználó mindig egy előre generált, azonnal betöltő oldalt kap — nincs várakozás a szerver-oldali renderelésre.
A kosár, a fizetési folyamat és a B2B felület valós idejű, SSR-alapú renderelést használ, hogy az árak és a készletszint mindig naprakész legyen. A Next.js App Router lehetővé tette, hogy ezt a két megközelítést egységes kódbázisban, route-szinten válasszuk szét.
Technikai döntés: ISR revalidate idő
A 60 másodperces revalidate idő tudatos kompromisszum: elegendően rövid ahhoz, hogy a készletszint naprakész legyen, de elegendően hosszú, hogy a CDN cache hatékonyan működjön és a szerver terhelése minimális maradjon. Flash sale esetén a revalidate API endpoint manuálisan is triggerelhető.
Miért PostgreSQL? — ACID tranzakciók és komplex lekérdezések
A B2B rendelések komplex folyamatokat igényelnek: egy rendelés leadásakor egyszerre kell foglalni a készletet, létrehozni a rendelési rekordot, elindítani a számlázást és értesíteni a raktárt. Ha bármelyik lépés meghibásodik, az egész tranzakciót vissza kell vonni — ez PostgreSQL ACID tulajdonságát igényli.
A NoSQL alternatívák (pl. MongoDB) nem kínálnak natív multi-document tranzakciókat ugyanolyan megbízhatósággal. PostgreSQL-lel Prisma ORM-et használtunk, amely typesafe lekérdezéseket és automatikus migrációt biztosított, drámaian lerövidítve a fejlesztési időt.
Miért Stripe? — Webhook kezelés és B2B számlázás
A korábbi rendszer problémája az volt, hogy a fizetési visszaigazolást a redirect URL-en keresztül kezelte — ha a felhasználó bezárta a böngészőt a redirect előtt, a fizetés elveszett az adatbázisban. Stripe webhook alapú megközelítéssel ez a probléma teljesen megszűnik: a Stripe közvetlenül értesíti a szervert minden fizetési eseményről, függetlenül a kliens viselkedésétől.
A B2B ügyfeleknek automatikus PDF számlát generálunk Stripe Invoicing segítségével, amely tartalmazza az EU-s adószámot és a fordított adózású (reverse charge) jelölést — ami B2B export esetén kötelező.
B2B vs. B2C logika egyetlen rendszerben
Az egyik legnagyobb architektúrális kihívás az volt, hogyan szolgáljon ki egyetlen Next.js alkalmazás két teljesen különböző üzleti modellt. A megoldás: szerepkör-alapú (role-based) middleware és Prisma séma szintű elkülönítés.
| Funkció | B2C (kisker) | B2B (nagyker) |
|---|---|---|
| Árazás | Fogyasztói ár (bruttó) | Nagykereskedelmi ár (nettó) + ÁFA |
| Minimális rendelés | Nincs | 50 kg / rendelés |
| Fizetési mód | Kártya, PayPal | Átutalás, számla utánfizetés (hitelkeret) |
| Számla | Egyszerűsített számla | Számla EU adószámmal, reverse charge |
| Regisztráció | Email + jelszó | Manuális jóváhagyás + cégadatok ellenőrzése |
A Next.js middleware réteg az első kérés pillanatában eldönti, milyen szerepkörrel rendelkezik a felhasználó, és ennek megfelelően irányítja a kérést a megfelelő szerver komponenshez. Ez azt jelenti, hogy ugyanaz az URL (/termekek/xyz) B2C látogatónak fogyasztói árat, bejelentkezett B2B partnernek nagykereskedelmi árat mutat — egy oldal renderelési cikluson belül.
Teljesítmény optimalizálás
Képkezelés: Next.js Image + WebP konverzió
Használt ruha webshopnál a termékképek általában nagy felbontású, szabályozatlan minőségű fotók. A Next.js Image komponens automatikusan konvertál WebP formátumba, méretezi a képet az adott viewport-hoz, és blur placeholder-t generál a lazy loading során — a felhasználó soha nem lát „üres" helyet, csak egy homályos előnézetet, amíg a kép betölt.
Adatbázis lekérdezés optimalizálás
A terméklistázó oldal kezdetben N+1 lekérdezési problémát okozott: minden termékhez külön lekérdezés indult a képek és kategóriák betöltéséhez. Prisma include és select direktívákkal egyetlen optimalizált JOIN lekérdezéssé alakítottuk, ami 87%-kal csökkentette az adatbázis terhelést listázásnál.
Keresés és szűrés: szerver oldali gyorsítótár
A termékkeresés és kategóriaszűrés eredményeit Redis-alapú szerver oldali cache-szel tároljuk 5 percig. A leggyakoribb keresési kombinációk (pl. „S méretű, jó állapotú kabát") azonnal kiszolgálódnak a cache-ből, az adatbázist megkerülve.
Biztonság
Figyelem: Webshopnál a biztonság nem opcionális
Egy fizetési folyamatot kezelő webshopnál egyetlen biztonsági rés elegendő az összes ügyféladat vagy pénzügyi adat kompromittálásához. A következő biztonsági rétegeket minden AiSolve.me webshopnál implementáljuk alapból.
CSRF védelem: Minden állapotmódosító API végpont (kosárba rakás, rendelés leadása, felhasználói adatok módosítása) CSRF token ellenőrzést alkalmaz. A Next.js szerver akcióin belül a same-site cookie policy és az Origin header validálás kettős védelmet biztosít.
Stripe webhook signing: A Stripe által küldött webhookokat titkos aláíráskulccsal ellenőrizzük minden fogadáskor. Ez megakadályozza, hogy valaki hamis webhook-okat küldjön a szerverünkre, ezzel manipulálva a rendelési státuszokat.
SQL injection védelem: Prisma ORM parameterized query-t használ alapból — nem lehetséges nyers SQL string összefűzés, ami az SQL injection legelterjedtebb forrása. Minden felhasználói bemenet Zod sémával is validálva van szerver oldalon, mielőtt az adatbázishoz érne.
Üzleti eredmények — 3 hónappal a launch után
Ügyfél visszajelzés
„Az előző rendszerünkkel heti rendszerességgel volt gondunk elveszett rendelésekkel és lassú oldalbetöltéssel. Az új webshop az első naptól stabilan működik. A B2B partnereinktől is pozitív visszajelzéseket kapunk — az automatikus számlázás rengeteg manuális munkát spórolt meg." — extrahasznaltruha.hu tulajdonos
Webshopot tervezel? Kérj ingyenes konzultációt!
Meséld el az üzleti modelled és a kihívásaidat — 24 órán belül személyre szabott architektúra javaslattal és árajánlattal válaszolunk. 0 Ft előleg, 14 napos szállítási garancia, 90+ Lighthouse.
Konzultációt kérek →Készen állsz a saját weboldaladra?
Ingyenes konzultáció során átbeszéljük, hogyan segíthetünk vállalkozásodnak növekedni egy modern, gyors és konverzióoptimalizált weboldallal. 14 nap alatt kész, 0 Ft induló költséggel.
![AI-vel Épített Webshop: extrahasznaltruha.hu — Next.js + PostgreSQL + Stripe [Esettanulmány]](/_next/image?url=%2Fimages%2Fblog%2Fextrahasznaltruha-webshop-case-study.webp&w=3840&q=75)
![PiheLux: Luxus Webshop 100/100 Lighthouse Pontszámmal — 1 Hét Alatt [Esettanulmány]](/_next/image?url=%2Fimages%2Fblog%2Fpihelux-launch-week.webp&w=3840&q=75)



![Hogyan Készül egy AI-natív Weboldal? A Teljes Folyamat Lépésről Lépésre [2026]](/_next/image?url=%2Fimages%2Fblog%2Fai-weboldal-keszules-folyamat.webp&w=3840&q=75)
