- Medusa JS
- 2026
- 8–10 weeks
A made-to-order vase studio in Osijek, shipping across the EU from a single Next.js storefront.
Eleven sculptural models, print-on-demand, one calm catalog.
Vasevo designs and prints biodegradable PLA vases in Osijek and ships them across Europe — the storefront had to feel as considered as the objects.
The artifact
01

Brand pulse
02
Palette
06
- #FFFFFF
- #C78A56
- #281507
- #E8CAA7
- #0C0C08
Typeface
2
Heading
Fraunces
Aa Bb Cc
vasevo.com
Body
DM Sans
Vasevo ships in six weeks — checkout, CMS, and three locales from one codebase.
abcdefghijklmnopqrstuvwxyz · 0123456789
Voice
The brand sits on a bone surface (#F2EDE0) with near-black type (#0F0E0B) and a warm caramel accent (#C78A56) — quiet, tactile, and product-led.
Receipts
What we shipped, in receipts.
Real evidence of what we shipped — not promises.
06 receipts
01
Catalog
11 models
Eleven sculptural vases live in the grid, each with quick view and add-to-cart.
02
Localization
10+ locales
Croatian and English variants across BE, BG, CZ, DE, DK, EE, ES via hreflang.
03
Shipping
EU-wide, €35+
Flat EU shipping from €35, free over €80 — surfaced in the ticker and footer.
04
Bundles
Sets of 2 or 3
Build-your-set flow with 5% off pairs and 10% off trios.
05
SEO
OG + schema
Open Graph, Twitter Card, and WebSite/Organization structured data on every page.
06
Hosting
Cloudflare edge
Served from Cloudflare with WebP imagery and preload hints for fast first paint.
Context
00
Vasevo is a Croatian decor brand designing and printing sculptural vases in-house in Osijek. Every piece is made to order in biodegradable PLA — no warehouse stock, no overproduction. The founders needed a storefront that could carry the calm of the product into the buying experience, handle EU shipping rules, and route every order back to the print queue in the studio.
Approach
01
We built the storefront on Next.js against a Medusa commerce engine, then wired the catalog, set builder, and order lookup against it. Eleven products were modeled with variant-level material and color (Matte Bone White, Matte Dark Green, Matte Caramel, Metal Oxide Green, Matte Desert Tan). The build-your-set page composes pairs and trios with automatic 5% / 10% discounts. Hreflang and locale switching cover Croatian plus English variants for ten EU markets, with shipping thresholds (€35 floor, €80 free) surfaced in a persistent header ticker.
Outcome
02
Vasevo now runs a single Next.js storefront on a Medusa backend, with print-on-demand orders flowing straight to the studio in Osijek. The catalog, set builder, and order lookup share one product model; shipping thresholds and locale-aware pricing are configured once and read everywhere.
Key surfaces
02
Product grid
01Product grid lists all eleven vases with material, height, and price visible per card.

Secondary hero
02Secondary hero anchors the studio story alongside price, model count, and shipping threshold.

Across devices
03 surfaces

Secondary hero pairs the product story with material claims and EU shipping detail.

Mid-page viewport shows the bundle prompts for sets of two and three.

Product grid reflows to a single column with quick view and add-to-cart on every card.
Stack
Architecture, layer by layer.
Every layer we shipped, end-to-end. No black boxes.
05 layers
Layer 01
Storefront
- Next.js
- React
- TypeScript
Layer 02
Commerce engine
- Medusa
- Postgres
Layer 03
Payments
- Stripe
Layer 04
Localization
- next-intl
- HR + EN across 10 EU markets
Layer 05
Hosting
- Cloudflare edge
- WebP imagery
“Ceramics kept breaking. Plastic wasn't the answer. We needed a material that was light, durable, and natural.”
Engagement
— fin
- Timeline8–10 weeks
- TeamFront Tribe
- RoleHeadless commerce build
- Live sitevasevo.com