Over 10 years in the industry

Wholesale e-⁠commerceand web applicationstailored toyour needs

We build websites and apps that work for your business – no compromises, no limits. The system adapts to you!

10
years of experience in design and development
5
countries we collaborate in, from Poland to Spain
100%
ownership of code and data, no vendor lock-in
0%
commission on transactions with open source

We work across Poland – with connections to Germany, Czechia, Latvia and Spain.

We help businesses
grow online

Websites

Websites that turn visitors into customers.

Learn more

Wholesale & online stores

B2B wholesale and B2C stores that turn visits into orders.

Learn more

Graphic design

Design that builds a consistent image for your brand.

Learn more

Process automation

Automation that gives you back time for what matters.

Learn more

Web and mobile apps

Web and mobile apps that keep your business always at hand.

Learn more

SEO / AEO optimisation

Visibility that turns searches into orders.

Learn more

Our latest project,
a move off Shopify

E-commerce store

An e-commerce store for tyres and wheels

Over five thousand listings and no two the same: every tyre and rim carries its own year, tread depth and casting number, so the catalogue describes items rather than sizes on a shelf. Built on Medusa, with a search that picks wheels by car make and year, and one stock shared with Allegro and OLX.

  • Shopify (previously)
  • Medusa
  • Next.js
  • React
  • BaseLinker
  • Allegro
  • OLX
  • Railway

Project storyOpony Kola

A Medusa.js store for tyres and wheels – item-level catalogue, shared stock

We moved a tyre and wheel store from Shopify to Medusa.js, with a Next.js storefront. Each listing is a specific tyre, rim or set, and DOT year, tread depth, bolt pattern, offset and casting number are data fields behind the filters and product page. BaseLinker holds the stock shared by the store, Allegro and OLX, and syncs with Medusa both ways.

Why this stack

Medusa.js – in the KODA Vault knowledge base
The catalogue describes specific pieces and sets, with parameters that vary by product type. Medusa keeps them as structured product data with our own admin form, and the BaseLinker integration, Omnibus price history and weight-based shipping are modules of the same backend.
Next.js – in the KODA Vault knowledge base
The Next.js and React storefront builds its own catalogue index from Medusa data, so filters for bolt pattern, offset, DOT year and tread depth respond instantly without a separate search service. Middleware also redirects old Shopify URLs.
BaseLinker – in the KODA Vault knowledge base
BaseLinker runs the stock and the Allegro and OLX sales, so the store syncs with it rather than keeping its own count. Our Medusa module queues operations, respects BaseLinker's API limits and logs every data exchange.
Allegro – in the KODA Vault knowledge base
Tyre brands, tyre models and rim makers are suggested in the admin panel from Allegro category parameters, so product card values match listing parameters. Live listings are read on a schedule, and each item shows whether it is listed.
OLX – in the KODA Vault knowledge base
Every item is unique, so it must never sell twice. OLX is connected to the same BaseLinker catalogue as Allegro, so the ad, the listing and the store share one stock figure, without a separate sync for each marketplace.
Railway – in the KODA Vault knowledge base
The Medusa backend, the Next.js storefront, PostgreSQL and Redis run in one Railway project as always-on processes. Sync jobs run on a schedule, the storefront keeps the catalogue index in process memory, and Redis-backed events and workflows survive deploys.

What it means in practice

  • Shoppers filter by DOT year, tread depth, bolt pattern and offset, because each is a separate field on the listing, not part of the title.
  • A tyre sold on Allegro or OLX stops being available in the store within minutes, and nobody has to take it down by hand.
  • Staff add a new item in one admin form suited to its type, and its BaseLinker card is created at once with photos and parameters.
  • Old Shopify URLs, including those used in campaigns, 301-redirect to the right category with the filter kept.

Integrations and automations

  • Wheel fitment by car

    Makes, models, generations, years and factory wheel sizes come from the wheel-size.com database. The storefront fetches them through a caching server that translates model names into Polish and feeds the sizes straight into the catalogue filter.

  • Stock from BaseLinker

    Every few minutes a job reads the BaseLinker catalogue and writes stock differences into Medusa, matched by card ID. It adds back reservations for open orders, so a run never takes away items already set aside for an order.

  • Orders to BaseLinker

    A store order first lands in a queue in our database, then a Medusa workflow sends it to BaseLinker, so an outage there does not stop sales and an uncertain result creates no duplicate. Status and tracking number come back, and the tracking number triggers the dispatch email.

  • Nightly catalogue reconciliation

    Every night we compare both catalogues: stock, prices, SKUs and cards that have appeared or disappeared on the BaseLinker side. Mismatches land in the admin panel with a decision on each row, and prices are always approved by a person.

This is just our latest launch.

See selected projects
Our edge

We work at a pace
you cannot hire

On every project, a few AI agents work alongside us in parallel, fed with a knowledge base built deployment after deployment. Every result is verified by another agent and every change goes through our code review – we know this technology and architecture inside out, so there is no room for spaghetti code.

  • Remigiusz Mielcarz
  • Adrian Mrósk

We are at the helm – a few AI agents behind us, each under code review.

  1. The knowledge base

    A vault with hundreds of pages of standards, playbooks and decisions from real deployments. Our institutional memory, not a folder of notes.

  2. A few agents at once

    Each agent gets that knowledge and its own slice of the project: the pricing module, the ERP integration, tests, SEO. In parallel, not one by one.

  3. Logic tailored 1:1

    Agents build and test autonomously, but nothing ships unchecked: one agent reviews another, and the final code review is ours. Architecture and quality stay in our hands.

12+
AI agents working in parallel
100%
of deployment knowledge in one base
Weeks
instead of months to launch

The vault: a knowledge base
that connects everything

Every deployment leaves a trace – standards, playbooks, decisions and battle-tested modules land in our vault. AI agents get that knowledge on day one, so no project ever starts from zero.

Click a node to see what it is and what it connects to.

This node is an internal practice of ours – we only describe it in the graph.

We build solutions
for every industry

Every industry has its own rules – from size charts in fashion to pallets in the garden. We are not learning on your project: we have shipped these patterns before.

  • Kids and toys age categories, bundles and certificates
  • Food service wholesale for venues and recurring orders
  • Fashion and clothing size charts, variants and lookbooks
  • Automotive part fitment by year and model
  • Health and beauty beauty wholesalers and salon zones
  • Electronics specs, warranties and comparison tools
  • Food and drink expiry dates and cold-chain logistics
  • Home and garden pallet shipping and oversized products

What can we build for you?

References we
actually earned

Our list of reviews grows with every project we hand over. Clients post them on Clutch, an independent platform that rates IT companies.

5.0 See all reviews Koda Plus's average rating on Clutch over the last 12 months is 5.0

Frequently asked
questions

  • What does Koda Plus do?

    Koda Plus is a team that builds complete online sales systems: B2B wholesale and e-commerce stores (on Medusa.js, Shopify and Webflow, among others), websites and web applications, graphic design, process automation and SEO and AEO optimisation. All of it in one pair of hands – from the first design through to scaling up.

  • Where are you based and do you work remotely?

    Our office is in Wrocław, and part of the team works from the Tricity area. We deliver projects fully remotely for clients across Poland – communication, meetings and file handover all happen online.

  • How much does an online store or a website cost?

    The quote depends on scope – a landing page is one thing, a large B2B store with integrations is another. We don't impose technologies or packages: after a short, free call we prepare a quote matched to your goal and budget.

  • Do I get the full code and all the access once the project is finished?

    Yes. We hand over the entire source code and every access – they belong to you. We don't lock clients in; you can keep developing the project with us or with any other team.

  • How long does a project take?

    A typical project takes 4 to 8 weeks, depending on complexity. Simpler websites are ready sooner, while larger stores with ERP, payment and logistics integrations take longer. We agree the timeline at the start and communicate progress at every stage.

  • What does the process look like from first contact to project kickoff?

    We start with a free online call to understand the scope, the integrations you need and your deadline. You then get a quote broken down into stages along with a schedule – once you accept it, we sign the contract and set a start date. Throughout the project your point of contact is one of the founders, Remigiusz or Adrian – nothing gets handed off to an account manager. We work in Polish and English.

  • What does the contract cover and how are stages settled?

    The contract covers scope, schedule, stage-based payments and the transfer of the economic copyright in the code to you, together with the fields of exploitation – Polish copyright law requires these to be listed explicitly and the contract itself to be in writing. We arrange the stages so you can see what you are paying for and in what order features get built. If the scope changes mid-project, we agree it separately before the work starts – not afterwards on an invoice.

  • What if I already have an in-house team or an agency – can you work alongside them?

    Yes. We can take one specific area: the Medusa.js backend, an ERP integration, the frontend or automations, and work inside your repository, code review process and ticket system. We can also audit your existing codebase and hand over recommendations instead of rewriting everything from scratch. We agree on who owns what at the start, so nothing gets duplicated and deployments don't block each other.

  • What happens after launch – do you maintain the store, and is there an SLA?

    After launch you can stay on a maintenance plan: monitoring, updates, fixes and further development. SLA terms and response times are agreed case by case, because a B2B wholesale platform running on ERP integrations needs something different from a company website. If your own team takes over, we run a full handover: documentation, environments and a walkthrough session for your developers.

Free 15-minute call

Tell us about your project,
we'll tailor the rest to you

A 15-minute call is enough for us to know whether we are a fit for your project.
We start from what you need, not from an off-the-shelf solution.

Contact us

Remigiusz in a navy shirt and glasses
I use iMessage I use WhatsApp
Adrian in a grey turtleneck and glasses
I use iMessage I use WhatsApp