work project
Zubr — Wholesale Meat Products Marketplace

Services
- →Next.js frontend with React SSR
- →.NET Core API backend
- →Headless CMS on Umbraco
- →GraphQL schema design and integration
- →Index engine with request-level caching
- →Product catalog and inquiry flow
Deliverables
- ✓Structured wholesale catalog with product cards, categories, and specs
- ✓WhatsApp-first inquiry flow with guaranteed response SLA
- ✓Headless CMS back office — typed content editing without a developer
- ✓GraphQL + index engine stack — near-zero perceived load time
- ✓React SSR — instant first paint, seamless client-side navigation
Client Journey
Wholesale Buyer
- Arrives with a specific need. A HoReCa manager or retail chain buyer lands on the platform looking for a particular meat category — chicken, beef, or duck. The homepage immediately surfaces the right catalog section with no detours.
- Browses a structured catalog. Products are organized by type and origin (Belarusian producer, local distributors). Each card shows cut type, packaging format, and temperature regime — refrigerated or frozen. No ambiguity, no need to call for specs.
- Reads about quality guarantees. A dedicated section explains the supply chain: animals raised without antibiotics under nutritionist supervision, all documentation provided by the supplier. The buyer builds trust before any contact.
- Submits a bulk inquiry in 90 seconds. The inquiry form captures name, phone, and product interest. The manager receives a WhatsApp ping and responds within 5 minutes during business hours — a guarantee published on the site.
- Gets a tailored commercial offer. The team discusses volume, assortment, and delivery schedule. A contract and prepayment follow, then production, quality control, and delivery to the buyer's warehouse or point of sale.
Content Manager (Internal)
- Logs into Umbraco CMS. The back office is role-separated — catalog editors, page editors, and admins operate in their own sections with no risk of cross-contamination.
- Adds or updates a product. A structured form enforces consistent data — category, cut type, origin, certificates. No free-form HTML; every field is typed.
- Publishes instantly. The change propagates via GraphQL to the Next.js frontend. The index engine picks up the update and re-warms the cache; the page reflects the new data in seconds without a full rebuild.
Before & After
| Before | After |
|---|---|
| ✗ Buyers discovered suppliers through cold calls and industry directories — days of research per batch | ✓ Structured catalog with categories, origin, and packaging — buyer finds the right product in under 2 minutes |
| ✗ Product specs only available after a phone call with a sales rep | ✓ Every product card shows cut type, format, temperature regime, and certificates — no call needed to qualify |
| ✗ No proof of quality — buyers took supplier claims on faith | ✓ Supply chain story, antibiotic-free guarantee, and nutritionist supervision published on-site |
| ✗ Inquiry forms with 48-hour response windows | ✓ WhatsApp-first flow with a guaranteed 5-minute response during business hours |
| ✗ Static HTML site with slow page refreshes and no CMS — updates required a developer | ✓ Headless Umbraco CMS + GraphQL + React SSR: content updated in seconds, pages load near-instantly |
| ✗ No index-layer caching — every request hit the origin server | ✓ All GraphQL queries cached at the index engine layer; repeat visits served from memory |
Metrics
<5 min
guaranteed WhatsApp response during business hours
7 days
delivery lead time from order to warehouse
80K+
tonnes of poultry produced annually by the partner farm
4
product categories: chicken, beef, duck, ready-made
~0 ms
perceived navigation time — SSR + cached GraphQL queries
10+
years the company has operated in the wholesale meat market
Architecture Highlights
- Headless CMS (Umbraco + .NET Core). Content is modelled as typed documents — no free-form HTML in the back office. Editors work in a structured form; developers consume a clean API.
- GraphQL data layer. The frontend queries only the fields it needs per page. A single unified schema covers products, categories, pages, and settings — no REST endpoint sprawl.
- Index engine + request caching. All GraphQL queries on the frontend pass through an index service that caches responses in memory. Cache invalidation fires automatically on CMS publish events — stale content is never served.
- React SSR via Next.js. Pages are server-rendered on first load for instant paint and correct SEO indexing. Client-side navigation is handled by React's virtual DOM — no full-page reloads, zero visible latency between routes.
Open for contract collaboration
I am available for contract-based collaboration. If you have an interesting project idea, schedule a call via Calendly.
Schedule a 30-min call