gora.
Jusmila — motorcycle parts catalog in Lithuania

Business logic

Motorcycle parts catalog in Lithuania: target audience, suppliers, warehouse format, multilingual.

~4 min read · 782 words

TL;DR

Jusmila is a Lithuanian e-commerce shop for motorcycle, ATV, and moped parts. Owned by UAB Jusmila with a physical warehouse and service centre in the town of Šakiai. On jusmila.lt — a catalog of 10,000+ parts, search by model, cart, same-day delivery within Lithuania.

The platform consists of three independent apps in one monorepo: a public storefront for buyers, an admin panel for catalog and order management, and an API between them. Catalog population is automated: data is pulled from several sources via a scraper built on chrome-devtools MCP — a rare approach that replaces the usual Puppeteer / Playwright stack.

Jusmila — what it is and how it works

Business context

UAB Jusmila is a Lithuanian company with its own warehouse and service centre in Šakiai. The niche — parts for motorcycles, ATVs, and mopeds: consumables (brake pads, filters, chains), seasonal parts (tires, batteries), body parts, and specialised equipment. The audience — private owners, workshops, and dealers.

The niche has a few serious challenges that the platform solves directly:

Model identification. Parts are rarely universal: the same brake pad can fit a dozen models from different manufacturers and not fit the eleventh. The buyer needs to quickly find the exact part that will fit their specific motorcycle. On the storefront this is solved through filters by make, model, and year, plus fitment tables on every product card.

Geo-distribution. The site serves the Lithuanian market, but the niche has a large Russian-speaking workshop community — a multilingual interface (LT / RU / EN) is mandatory, not optional. next-intl renders all three variants statically without losing SEO.

Delivery speed. The competitive edge is same-day delivery from the in-house warehouse. The platform tracks stock in real time; if a part isn't physically in Šakiai, the card immediately shows "out of stock" rather than "ask a manager".

The catalog grows. 10,000+ items is not a static number — it's a working stream of new SKUs. Manual entry doesn't scale. So the project has dedicated infrastructure for import and automatic card enrichment.

How an order flows end to end

Step 1. Find the part

The client visits jusmila.lt, picks a language (Lithuanian by default), filters by motorcycle make and model. The catalog returns a list of compatible parts. Each card has a photo, SKU, price, stock status, and a list of compatible models.

Search works in two modes: text by SKU and names, and structured by make/model/year. The second mode is more precise for users who know their motorcycle but don't know what to look for exactly.

Step 2. Cart and checkout

The cart lives in localStorage until checkout. Once the user decides to buy — the cart is sent to the server and tied to the account (if any) or to the guest session. Next — delivery method (courier, pickup in Šakiai, postamat) and payment.

Step 3. Confirmation and picking

The order lands in the admin panel. The warehouse staffer sees the item in the order queue, picks it physically, and marks it ready. If a part isn't there (stock desync), the status changes to "partial pick" and the client gets a notification with options.

Step 4. Delivery

If the client is in the coverage zone — the order ships by courier the same day. Otherwise — postamat or postal service.

What's unusual

chrome-devtools MCP instead of Puppeteer. Scraping of competitor and supplier catalogs runs through a real browser controlled via the MCP protocol. This bypasses anti-bot defences that catch Puppeteer's headless mode. No external libraries beyond the official MCP client.

Imports from multiple sources. The codebase contains import-mototex and import-anjese scripts — pipelines for specific suppliers. Each source has its own parser and normaliser; the shared artefact is TypeORM entities.

Real-time stock. Socket.IO + Redis adapter keeps stock in sync between admin and storefront. When a warehouse staffer changes the count, the storefront sees the new value without a reload.

Session replay via rrweb. The admin embeds rrweb-player — you can replay a user's session on the site to debug a specific bug or odd behaviour. Useful when triaging "my cart didn't work" complaints.

Geo and language

The site is Lithuanian by default (LT). Russian — for Russian-speaking workshops in Lithuania (there are many around Kaunas). English — for cross-border clients from Latvia and Poland. next-intl serves each page as a separate URL: /lt/..., /ru/..., /en/... — which matters for Google indexing.

Warehouse and service centre — in Šakiai. A small town (around 6,000 population) but a convenient logistics point for central Lithuania. Delivery across Lithuania — same day; international orders — via standard services.