From my sister's idea up to a Full-Fledged Marketplace
This marketplace didn't come about because I wanted to "build a startup." I'm writing this text as someone who went through the entire journey alone — with a keyboard, coffee, and a head full of doubts. There was no client brief or a budget approved by someone higher up.
The idea came from my sister a long time ago. It was about creating a platform for art and handmade crafts, where creators could sell their works without high commissions, restrictions, or rules imposed by someone else. You can see for yourself how it turned out: https://artovnia.com.
Unfortunately, the cost of outsourcing such a project to a developer or an agency was completely out of our reach. The whole thing ended up in a drawer for several years.
Only later, after I'd already completed a few of my own side projects, did I think: "What if I try to build it myself? Even if it takes me a year or two."
And that's how it started. The project consumed thousands of hours of work, hundreds of technical decisions, and quite a few nerves.
Ambitions
I never approach projects wondering whether I'll manage. I simply assume I will. If I don't know something, it just means I haven't learned it yet.
At the beginning, the whole thing felt overwhelming. A lot of code, hundreds of files, an architecture that seemed absurdly complicated for one person.
Over time, though, as I added more modules, services, endpoints, and interface elements, everything started to fit together. What began as chaos turned into a reasonably organized system.
The real breakthrough came when I started spending 10–14 hours a day on the platform. That's when I realized this was no longer a side project after hours. It had become my main path.
Why Medusa.js and Not Something Simpler?
Choosing the technology is never a simple matter. It's a decision that impacts everything throughout the entire development process.
From the very start, I knew exactly what I definitely didn't want: a closed ecosystem, restrictions imposed by the platform, and costs that grow faster than the business itself.
That's why Shopify and WooCommerce were quickly ruled out. I needed full control over the code, good scalability, the ability to write in TypeScript and React, and an architecture that could be adapted to a marketplace with multiple sellers — not just a regular store owned by one person.
Medusa.js was demanding from day one. Today, looking back, I can say it was a deliberate choice of a stack for a custom art and handmade crafts marketplace, rather than a quick solution for an MVP. The backend in Medusa doesn't forgive half-measures — you really have to understand the core, workflows, and how the modules work.
At first, creating custom modules seemed almost impossible. But once I figured out how everything was connected, it started to make sense.
The biggest advantage? The modules are well isolated — breaking one doesn't drag down the entire system.
Backend — This Is Where It Was the Hardest
If someone wants to know what building a custom marketplace backend in Node.js really looks like, this is where the full truth lies.
The most problems came from creating custom services, registering them properly in Medusa, and understanding the entire data flow: from models, through services, hooks, workflows, subscribers, and endpoints, all the way to the dashboard and storefront.
On top of that, there was Zod validation, OpenAPI schemas, graph query configuration, middlewares, and access control.
The documentation didn't answer all my questions, so I solved a lot of things through trial and error — looking at logs, using the debugger, and just trying different approaches.
I often had to throw out entire chunks of code and rewrite them from scratch. There was no room for sentiment — if the architecture was wrong, it had to be changed.
Payments — The Biggest Burden
If I had to point to one element that overwhelmed me the most, it would definitely be payments.
At first, I tried PayU. The documentation was poor, there were no ready integrations with Medusa. I wrote everything from scratch, and eventually it worked.
Unfortunately, it later turned out that PayU wouldn't work with us due to the business model and legal requirements. The whole module went in the trash.
I rewrote everything for Stripe. From today's perspective, it was definitely the best decision — the integration is simpler, and much more convenient for artists from different countries.
Why a Separate Seller Dashboard?
At some point, I stopped thinking only like a developer and started looking at the product through the eyes of the user. Artovnia is a platform primarily for artists and handmade creators, not for programmers.
The standard Medusa admin panel is too bloated, too technical, and limited to available widgets and plugins.
I decided to build a completely separate seller dashboard. This gave me full design freedom — the same kind I have in commercial projects on appcrates.pl.
I could design the interface to guide the user step by step. Various automations appeared, simplified processes, and an onboarding wizard.
For every UX decision, I asked myself one question: does this actually make the user's life easier? If the answer was "yes," it meant I was going in the right direction.

Storefront: Next.js 15 and SEO
The storefront is the face of the entire platform. If it's not fast, doesn't sell, and doesn't rank high in Google, the rest of the work goes to waste.
Next.js with the App Router gave me everything I needed: server-side rendering, high performance, and full control over page structure.
I implemented SEO at the very end, but I did it solidly: dynamic meta tags, automatically generated sitemap, robots.txt file, my own SEO helper, and bot detection with direct routing to the API instead of Algolia.
Additionally, cache layers, tags, and edge functions on Vercel — it all turned out to be a bigger challenge than I expected. I'm still optimizing.
Artovnia will never be "finished." It's a living project that I'm constantly developing.
This Is Just the Beginning
I'm writing this text not only as a summary of one project, but as a piece of my professional journey. Appcrates.pl is where I pursue my own ideas and help others build custom stores and marketplaces.
Artovnia is just getting started. Now comes marketing, promotion, and reaching out to creators and customers.
This project taught me two things: that the only limits are the ones we set for ourselves, and that there's always something new to master.
Imposter syndrome definitely still shows up, but with each day I have more tools to deal with it.
I want Artovnia to become the largest platform for art and handmade crafts in Poland, and later — who knows.
If after reading this you thought you'd like to check out https://artovnia.com, or that you could use someone to build a similar custom marketplace or store for your business — you know where to find me.





