Case Study · Full Stack Developer · since January 2026

Celina: a live two-sided marketplace, built solo, from first commit to production

Celina (celinaeda.ru) is a consumer marketplace connecting home cooks with customers. I have been building it in Lisbon since January 2026, and it launched from Lisbon, Portugal, in July 2026. I built every layer of it — product design, frontend, backend, infrastructure, SEO, and analytics — and operate it in production. It's the most honest portfolio piece a developer can show you: a real business system running in production, not a demo.

celinaeda.rulive
Celina marketplace feed with cook cards showing rating, city, delivery fee and minimum order
The feed. Cuisine filters, AI search, and every card carrying rating, city, delivery fee and minimum order — the four things a buyer decides on.
celinaeda.ru/loginlive
Celina sign-in screen with the live notification stack previewed beside the form
Sign-in. Real notifications previewed beside the form, so a first-time visitor sees what the product does before creating an account.

The challenge

A two-sided marketplace is one of the hardest things to ship as a solo developer. It needs seller onboarding with identity verification, a catalog customers trust, ordering with real-time status, security that protects both sides, and — the part most builds skip — the ability to be found: a marketplace nobody discovers on Google is dead on arrival.

Both sides have to work from the same day: cooks who sign up and have their identity checked, and customers willing to order from someone they have never met. Neither group waits around while the other half of the product is built.

The front end: a React app Google can read

A marketplace lives on organic traffic, but a classic single-page app hands the crawler an all but empty HTML document. So the front end is React 18 and TypeScript, generated statically with Vite: the visitor gets an app, the search engine gets finished HTML.

That produced more than 100 prerendered landing pages, bilingual, indexed by both Google and Yandex. On every deploy the site submits its new and changed pages through IndexNow, so a page never sits waiting for a crawler to come past by chance.

The back end: orders, identity and access

Behind it runs Node.js with Express and Prisma on MySQL. The center of the system is the order lifecycle: from placed to delivered, with a status both sides watch in real time. As long as the customer can see where the order is, nobody has to pick up the phone.

Cooks go through a KYC process: they upload an identity document, and it is reviewed before their kitchen becomes visible. Permissions are enforced on the server rather than in the interface — whatever the browser hides, the server blocks as well.

The infrastructure

The application runs in Docker containers behind nginx on a VPS of my own, with Let's Encrypt certificates that renew themselves. A deploy is a single command, so there is no manual step left for me to forget. Every night a backup of the database and the uploaded documents runs on its own.

I also measure the whole funnel: visit to catalog, catalog to order. Together with the Search Console data, that is what decides which pages get attention — not my instinct.

Choices and trade-offs

Every choice in this project had a price. Static generation makes the site findable, but every content change needs a new build; that is acceptable only because the build is automated. Reviewing KYC by hand does not scale forever, but at this stage an external verification service costs money that is better spent on the product itself.

Just as important is what I deliberately did not do: no Kubernetes, no microservices, no extra service with a monthly subscription. At this volume, one server, one database and a monolithic back end are the cheapest option and the easiest to maintain — and I am the one who gets out of bed at night when something breaks.

Results

100+SEO pages indexed by Google & Yandex
100%built, deployed & operated by one developer
Livein production at celinaeda.ru

Celina runs in production at celinaeda.ru. More than 100 pages sit in the Google and Yandex index, cooks sign up and get verified, and customers place orders they can follow live. Design, build, deployment and day-to-day operation are all on one person.

What matters more than the numbers is what does not happen. There is no agency to call when something breaks, no platform that raises its prices halfway through, and no part of the stack I cannot repair myself. The source is public too — the whole production system on GitHub, not a sample.

What this means for your project

Everything expensive about your project — authentication, payments-ready order flows, verification, deployment, SEO — I have already solved in production under my own name. You're not paying me to learn on your budget.

I work remotely and in English from Lisbon, Portugal. Prices are in euros and fixed before anything starts, and the GDPR is part of the design from the first sketch: no third-party trackers you did not ask for, analytics that is not loaded before consent, and hosting in a region you choose.

Frequently asked questions

Can you build something like this for my company?
Yes. Celina is not an exception, it is how I work: the same stack, the same approach. We decide together what belongs in the first version and what can wait, and the fixed price is set against that scope.
How long does a project like this take?
It depends on the scope. A landing page is usually finished in one to two weeks, a business website with technical SEO in two to four. A web application like Celina is a longer road; within 48 hours you get a fixed quote with a concrete schedule.
Do you work with clients abroad?
Yes. I work remotely and in English, and I am set up for clients anywhere in Europe or the United States: prices in euros and a working day that overlaps both. We talk over WhatsApp, email or video calls, whichever you prefer.
Who owns the code when the project is finished?
You do. Code, design and data transfer to you on final payment, and the domain and hosting are in your name from day one — no license, no lock-in, and no monthly fee to keep using what you already paid for.
Can I read your code before hiring you?
Yes. Celina is live at celinaeda.ru and its source is public on GitHub, the whole production system rather than a sample. Purchases, a role-based platform built in Java 17 and Spring Boot with token authentication, is public as well, so you or your technical advisor can read exactly how I write before deciding anything.
How do we stay in touch during the project?
The first conversation is a video call, whenever it suits you. After that you follow the build on a staging link you can open yourself, and we talk over WhatsApp or video, so you never have to wait for a status email.