Green Jardin — omnichannel CBD retail
A live CBD retailer with a Shopify storefront and a physical tea salon in Palaiseau — plus a custom staff platform I built solo to run the in-store experience: TV menu, POS checkout, loyalty, and Shopify price sync.
Storefront designed and built in collaboration with Ino Digital. Staff platform, POS, loyalty engine, and Shopify bridge — designed and built by Elias.

The client
Green Jardin is a premium CBD retailer operating both online and in-store — flowers, resins, puffs, oils, cosmetics, and accessories. Products are lab-certified, THC ≤ 0.3%, and sourced from European growers. The physical location doubles as a tea salon at 2 Bis Rue Léon Blum, Palaiseau (91), rated 4.8/5 on Google.
The business needed more than a web shop: staff sell by the gram at the counter, customers see prices on a TV menu, and the online catalogue must stay aligned with what happens in the store.
The omnichannel challenge
Most CBD shops bolt a Shopify theme onto a physical counter and hope for the best. Green Jardin needed the opposite — one product catalogue, two surfaces (web and in-store TV), and a checkout flow that non-technical staff could run during rush hour.
The gap: Shopify handles e-commerce beautifully, but it does not power a gram-scale POS, a live customer-facing TV, or a 14% loyalty wallet that updates in real time while the client is still at the counter.
What we shipped — storefront
The public-facing shop at green-jardin.fr is a live Shopify storefront, designed and built in collaboration with Ino Digital. Product universes (flowers, resins, puffs, oils, cosmetics), age verification, trust signals (lab certification, Google rating), and a loyalty programme on the web side.
The in-store TV menu is embedded on the site via a secure iframe — customers browsing online see the same live menu displayed in the shop.
What I built — staff platform
Behind the storefront, I designed and built a private staff platform (React + Firebase + Vercel serverless) that runs daily operations in the boutique. It is not publicly accessible — only the team uses it on shop devices.
- Control hub — four entry points: TV screen, POS sale, menu editor, loyalty stats.
- TV menu — full-screen product board by category (CBD / Neo ranges), synced in real time via Firebase RTDB. Live cart overlays, customer greeting, and cashback display while they wait.
- POS checkout — three-step flow: loyalty customer → gram/pack products → payment (card via SumUp terminal or cash). Guest sales supported.
- Loyalty engine — 14% cashback on net spend, wallet balance usable as discount, and Firestore transactions for atomic updates at checkout.
- Menu admin + Shopify bridge — edit in-store prices, compare against Shopify Admin GraphQL, push corrections in one click.
- Branded email receipts — post-sale receipts sent via serverless API (Nodemailer).
- Security — Firebase Auth for staff, JWT verification on all API routes, CSP-isolated public iframe so the web embed cannot reach POS or admin routes.
My role
Storefront: co-designed and delivered the Shopify experience with Ino Digital — product structure, UX, and go-live on green-jardin.fr.
Staff platform: sole designer and developer — architecture, React frontend, Firebase data layer, Vercel serverless APIs (SumUp, Shopify, email), deployment, and ongoing maintenance. Code lives in a private repository.
Screens in context
The product spans a public Shopify storefront, an embedded TV menu, and a full in-store ops stack — each surface built for its audience without compromising the others.





Want the full story?
Green Jardin is one of webgen's production ships — from a Minecraft kid to omnichannel retail systems and production AI at Nokia.