From a farm's harvest to a paid pre-order.
A platform where small farms and cooperatives sell a harvest before it is planted: buyers pre-order a share, the money is held against evidence, and release happens at milestones the producer has to prove — seedlings, harvest, delivery.
If you sell in the UK, the same machinery applies with different nouns. A veg box is a reward tier, a wholesale account is an agreement with a price discipline, a weekly round is a delivery window, and a CSA share is a pre-order with a season attached. The Romanian fiscal layer is the only part that does not travel.
A marketplace, not a brochure site
Small farms, no sales channel
Romanian producers sell at the farm gate or through intermediaries. A cooperative can grow the crop but cannot take a card payment, promise a delivery window or prove a milestone to a buyer.
The whole application
Data model, API, back office, buyer-facing flows and the producer workspace, built as one Laravel application with a Vue front end and a written test suite.
84 models · 328 routes
132 migrations, 113 screens, 41,000 lines of application code and 119 test files. A producer directory of 77,490 records across 34 counties.
Pre-orders released against evidence
A buyer does not invest; they pre-order a share of a specific harvest. The platform holds the money in an escrow ledger and releases it as the producer proves each stage — seedlings in the ground, harvest, delivery window.
What the buyer sees
- Evidence, not promises. Each milestone is a gate: the next payment cannot move until the producer posts proof.
- A share of a harvest, priced in rows and square metres, with delivery in a named city and week.
- Honest scarcity. Reward tiers carry stock — "24 of 40 left" is a database count, not a banner.
- Shareable by link or WhatsApp, which is how these campaigns actually travel.
What the producer sees
- A wallet with held, released and withdrawn amounts kept as separate ledger entries.
- The same campaign from a private workspace: rewards, updates, supporters, payouts.
A request, responses, and an agreement both sides accept
Beyond consumers, the platform runs a sourcing loop: a buyer publishes a request with quantity, product and county; producers respond; the chosen response becomes a versioned agreement that both parties accept.
Why this is the hard part
Anyone can build a form. The difficult part is that a B2B agreement changes after it is agreed — quantity, price, delivery date — and both sides need to see which version they accepted.
- Requests, responses and agreements are separate records with their own lifecycle.
- Every revision creates a new version; acceptance is recorded per version, per party, with a timestamp.
- Withdrawal keeps the history rather than deleting it.
- A national supply map with product, offer-type and county filters, and an explicit empty state: no point on the map does not mean no crop.
77,490 producers, searchable by what they grow
Structure beats a list
A single sorted table of 77,000 producers is unusable. The directory is organised by segment — seed and seedlings, fruit growing, dairy, feed, machinery — each with its own filters, and every entry carries the county and the products it is relevant for.
- Server-side search and pagination, so a county filter does not load 77,000 rows into a browser.
- Producer records are separate from buyer accounts: being listed is not the same as trading.
- Import and moderation flows, because a directory this size is maintained, not typed.
What is real, and what is deliberately not
Built and working
The application, the ledger and release logic, the sourcing workflow with versioned agreements, the directory, the producer workspace, PDFs and QR codes for produce labels, the multilingual public pages, and 119 test files covering the money and agreement paths.
The payment layer is a driver interface: the platform records pledges and escrow entries, and a payment provider plugs in behind it. No payment provider is connected in this build, and no sales, GMV or funding result is claimed.
Romanian-specific, and what changes for the UK
e-Factura and SERSPAR integrations exist because Romanian invoicing requires them. A UK build needs none of that: it needs VAT-compliant invoices, Making Tax Digital-friendly exports or an accounting integration, and delivery slots that match how UK growers sell — veg boxes, CSAs, wholesale to restaurants and farm shops.
The directory was seeded from public sources; the consumer campaigns shown are demonstration data, not client revenue.
Two shapes of work, same builder
A digital store that sells produce properly
Products with real stock, delivery slots by postcode, click-and-collect at the farm, card payments, and an order list the picker can print. Three to four weeks, built on a stack you own.
A platform with money and agreements in it
Pre-orders against milestones, memberships or CSA shares, wholesale ordering with agreed prices, supplier directories, and integrations with your accounting. This case is the second shape: 328 routes, 84 models, a written test suite.
If you sell direct, or buy from growers
A one-week review at £1,050 takes one workflow — the checkout, the pre-order, the wholesale order — and returns the data model, the risks and a fixed build price. It is credited against the build.