gora.
Jusmila — moto-dalių katalogas Lietuvoje

Verslo logika

Motociklų atsarginių dalių katalogas Lietuvoje: tikslinė auditorija, tiekėjai, sandėlio formatas, daugiakalbystė.

~3 min skaityti · 661 žodžių

TL;DR

Jusmila — lietuviška e-commerce parduotuvė, prekiaujanti motociklų, keturračių ir mopedų atsarginėmis dalimis. Savininkas — UAB Jusmila, fizinis sandėlis ir servisas Šakių mieste. Svetainėje jusmila.lt — 10 000+ detalių katalogas, paieška pagal modelius, krepšelis, pristatymas Lietuvoje užsakymo dieną.

Platforma sudaryta iš trijų nepriklausomų aplikacijų viename monorepo: vieša vitrina pirkėjams, administracinė skiltis katalogui ir užsakymams valdyti bei API tarp jų. Katalogo pildymas automatizuotas: duomenys traukiami iš kelių šaltinių per skreiperį, paremtą chrome-devtools MCP — tai retas požiūris, pakeičiantis įprastinius Puppeteer / Playwright.

Jusmila — kas tai ir kaip veikia

Verslo kontekstas

UAB Jusmila — lietuviška įmonė su sandėliu ir nuosavu servisu Šakiuose. Niša — motociklų, keturračių ir mopedų atsarginės dalys: susidėvinčios detalės (stabdžių kaladėlės, filtrai, grandinės), sezoninės dalys (padangos, akumuliatoriai), kėbulo dalys ir specialioji įranga. Auditorija — privatūs technikos savininkai, dirbtuvės, dileriai.

Šioje nišoje yra keletas rimtų sunkumų, kuriuos platforma sprendžia tiesiogiai:

Modelio identifikavimas. Atsarginės dalys retai būna universalios: ta pati kaladėlė gali tikti dešimčiai skirtingų gamintojų modelių, o vienuoliktajam — netikti. Pirkėjas turi greitai rasti būtent tą detalę, kuri tiks jo konkrečiam motociklui. Vitrinoje tai sprendžiama filtrais pagal markę, modelį ir metus, plius suderinamumo (fitment) lentelėmis kiekvienoje prekės kortelėje.

Geografinis pasiskirstymas. Svetainė veikia Lietuvos rinkai, tačiau nišoje yra nemažai rusakalbių dirbtuvių — daugiakalbė sąsaja (LT / RU / EN) yra būtina, ne antraeilė. next-intl renderiuoja visus tris variantus statiškai, neprarandant SEO.

Pristatymo greitis. Konkurencinis pranašumas — pristatymas tą pačią dieną iš nuosavo sandėlio. Platforma seka likučius realiu laiku; jei detalės fiziškai nėra Šakiuose, kortelėje iškart rodoma „nėra sandėlyje", o ne „pasitikslinkite pas vadybininką".

Katalogas auga. 10 000+ pozicijų — tai ne statinis skaičius, o veikiantis naujų SKU srautas. Pildymas rankomis nesimasštabuoja. Todėl projekte yra atskira importo ir automatinio kortelių praturtinimo infrastruktūra.

Kaip veikia užsakymas nuo pradžios iki pabaigos

1 žingsnis. Detalės paieška

Klientas užeina į jusmila.lt, pasirenka kalbą (lietuvių pagal nutylėjimą), nustato filtrą pagal motociklo gamintoją ir modelį. Katalogas pateikia suderinamų detalių sąrašą. Kiekvienoje kortelėje — nuotrauka, artikulas, kaina, prieinamumo statusas ir suderinamumas su konkrečiais modeliais.

Paieška veikia dviem režimais: tekstinė pagal artikulus ir pavadinimus, ir struktūrinė — pagal markę/modelį/metus. Antrasis režimas tikslesnis vartotojui, kuris žino savo motociklą, bet nežino, ko konkrečiai ieškoti.

2 žingsnis. Krepšelis ir užsakymo formavimas

Krepšelis gyvuoja localStorage iki užsakymo formavimo momento. Po to, kai vartotojas nusprendžia pirkti — krepšelis siunčiamas į serverį, susiejamas su paskyra (jei ji yra) arba su svečio sesija. Toliau — pristatymo būdo (kurjeris, atsiėmimas Šakiuose, paštomatas) ir apmokėjimo pasirinkimas.

3 žingsnis. Patvirtinimas ir surinkimas

Užsakymas patenka į administracinę skiltį. Sandėlio darbuotojas mato poziciją užsakymų eilėje, fiziškai surenka ir pažymi kaip paruoštą. Jei detalės neatsirado (likučių sinchronizacijos sutrikimas), statusas keičiasi į „dalinis surinkimas", klientui atsiunčiamas pranešimas su variantais.

4 žingsnis. Pristatymas

Jei klientas patenka į aptarnavimo zoną — užsakymą tą pačią dieną pristato kurjeris. Kitu atveju — paštomatas arba pašto paslauga.

Kas neįprasta

chrome-devtools MCP vietoj Puppeteer. Konkurentų ir tiekėjų katalogų skreipinimas vyksta per realią naršyklę, valdomą MCP protokolu. Tai leidžia apeiti anti-bot apsaugas, kurios pagauna Puppeteer headless režimą. Jokių išorinių bibliotekų, išskyrus oficialų MCP klientą.

Importai iš kelių šaltinių. Kode gyvuoja skriptai import-mototex, import-anjese — konkrečių tiekėjų pipeline'ai. Kiekvienas šaltinis turi savo parserį ir normalizatorių, bendras artefaktas — TypeORM esybės.

Real-time likučiai. Socket.IO + Redis adapter palaiko likučių sinchronizaciją tarp administracinės skilties ir vitrinos. Kai sandėlio darbuotojas keičia kiekį, vitrina mato naują reikšmę be perkrovimo.

Session replay per rrweb. Administracinėje skiltyje integruotas rrweb-player — galima peržiūrėti vartotojo sesiją svetainėje, kad išsiaiškintum konkretų bug'ą ar nesuprantamą elgesį. Naudinga nagrinėjant skundus „man krepšelis nesuveikė".

Geografija ir kalba

Svetainė — lietuvių kalba pagal nutylėjimą (LT). Rusų — rusakalbėms dirbtuvėms Lietuvoje (jų Kauno apylinkėse nemažai). Anglų — pasienio klientams iš Latvijos ir Lenkijos. next-intl pateikia kiekvieną puslapį kaip atskirą URL: /lt/..., /ru/..., /en/... — tai svarbu indeksavimui Google.

Sandėlis ir servisas — Šakiuose. Tai mažas miestas (apie 6 000 gyventojų), bet patogus logistikos taškas centrinei Lietuvai. Pristatymas Lietuvoje — tą pačią dieną; tarptautiniai užsakymai — per standartines paslaugas.