Online Ordering for Farms: Farmica Launches Platform
Online Ordering for Farms: Farmica Launches Platform
Perishable-first ordering for farm pickup: availability-by-date, subdomain stores, and self-service onboarding for…
·Updated on:··
⚡ Next.js Implementation Guides
In-depth Next.js guides covering App Router, RSC, ISR, and deployment. Get code examples, optimization checklists, and prompts to accelerate development.
Farmica is live.
I have been building this quietly for a while now, and it is finally at a point where I can talk about it properly.
Farmica is an online ordering platform built specifically for farms selling direct to customers. Not a generic shop. Not another Shopify storefront. Something built around how farm sales actually work: the customer picks up their food at a specific location on a specific date, and only then sees what is available for that slot. Perishable logic, not catalogue logic.
I have been calling this context first, commerce second in the internal docs. Wolt and Uber Eats do something similar with address and delivery time; Farmica does it for farm pickup and hub collection. If you browse without locking in and , you get the wrong stock, the wrong dates, or both. The product does not pretend otherwise — the pickup context sits in the header on every page, not buried at checkout.
Each farm runs on its own subdomain (your-farm.farmica.si) with two main surfaces:
Order form — the customer-facing store (catalog, cart, checkout, account, optional PWA install and push on the profile page).
Office — the backoffice where they manage orders, products, delivery dates, locations, and — when they need it — inventory.
Farmers can sign up through a self-service onboarding wizard (register.farmica.si): account, products, pickup and/or hub delivery, calendar dates, locations, and optionally stock. When they hit publish, the tenant, catalog, delivery schedule, and inventory records are created in one shot. No “we will set you up manually” phase.
There are two order modes, because not every farm wants production batches and reservation math on day one:
Advanced — delivery dates, pickup slots, fresh stock tied to a date (“sveža zaloga”), shelf-stable pool stock (“trajna zaloga”), reservations on order create. The catalog is availability-aware for the selected date.
Simple — still a real storefront, but oriented toward farms that mainly want to collect orders and handle logistics themselves, without running the full inventory machinery.
Orders can sit in pending approval until the farmer confirms — useful when you are still coordinating pickup by phone or message.
Storefronts are live in Slovenian, English, and German. Customers can check out as guests or with an account; one email can work across farms on the platform (register on one farm, log in on another without a second signup). That was a deliberate multi-tenant choice, not an afterthought.
What is still in progress (being honest)
I would rather say this here than oversell on a landing page:
A cross-farm marketplace (trznica) — shared pickup places, one cart per place and date, checkout splitting into one order per farm — has a solid data layer and routing groundwork; the full shopper experience is not finished yet.
Simple mode is real in the model and onboarding, but some storefront paths still assume the advanced delivery-date flow in places.
“Delivery by agreement” (order now, arrange details later) is specced and feasible; not fully shipped.
The core loop — farm publishes, customer picks context, orders, farmer runs Pisarna — is what I am happy to show today.
Under the hood
The stack is Next.js 16.2 on the App Router with Payload CMS 3 as the backend (collections, auth, jobs, admin). Multi-tenant by design: tenant-owned data is scoped everywhere it matters, which sounds obvious until you have tried to bolt it on later.
Everything is fully self-hosted. I set up separate dev, staging, and production environments with their own S3 buckets and PostgreSQL clone replicas at each pipeline stage. CI is wired up across all three. Background work (email, media, inventory-heavy jobs) is split between in-process runners and dedicated workers so a newsletter spike does not starve order processing. It is the kind of setup I usually see at much larger teams, and doing it at this scale — as a small studio — has been genuinely interesting to think through and document.
Transactional email runs through a Brevo-backed pipeline; I treat email less as “notifications” and more as trust: did the order go through, what happens next, does the farmer need to act now. Several lifecycle gaps remain on that front, and they are on the list.
What I will write about next
A lot of content is going to come out of this: the infrastructure decisions (VPS, nginx, observability, clone DBs in CI), the product design (why location should beat date in the UI, shared pickup places vs tenant locations), Payload multi-tenant footguns, and the tradeoffs of building B2B SaaS as a two-person studio. Stay tuned.
Try it
If you know a farmer selling directly to customers, they can sign up for free here:
https://register.farmica.si/
And if you want to see how the customer-facing store works, the demo is live:
https://demo.farmica.si/en
Shorter version (~120 words) if you need a newsletter blurb:
Farmica is live — online ordering for farms selling direct, built around pickup location and date before catalog (perishable logic, not Shopify logic). Next.js 16.2 + Payload CMS 3, self-hosted with dev/staging/prod CI. Farms get a subdomain store + Pisarna backoffice; customers see availability for their slot. Register a farm · Demo store. More posts on infra and product design soon.
I'm Matija Žiberna, a self-taught full-stack developer and co-founder passionate about building products, writing clean code, and figuring out how to turn ideas into businesses. I write about web development with Next.js, lessons from entrepreneurship, and the journey of learning by doing. My goal is to provide value through code—whether it's through tools, content, or real-world software.