dankbud
A premium cannabis storefront with real e-commerce, member club tiers, and locker-pickup logistics.
Visit live site →
Client
dankbud (Cape Town)
Industry
E-commerce · Cannabis
Year
2026
Stack
Next.js 16 · React 19 · Supabase (Postgres + Auth + Storage) · PayFast · Vercel · Playwright (e2e)
Scope
Full product catalogue + variants · Cart + PayFast checkout (ZAR) · Gamified member club — XP levels, quests, scratch cards, leaderboard · ‘Plug Tree’ referral system (earn from your network) · Locker-pickup logistics (driver console + locker codes) · Staff admin (orders, inventory, refunds) · POPIA compliance, age-gate, T&Cs · Ops playbooks + staff manuals (handed over as PDFs)
Status
Live
The problem
Existing local cannabis retailers were running on either WhatsApp-only ordering (no inventory, no receipts, no compliance trail) or generic Shopify themes that flagged for content review constantly. dankbud needed an end-to-end stack — storefront, payments, member tiers, locker logistics, staff tools — built in-house so the operator owned everything: code, customer data, audit logs, branding.
Our approach
We treated this less like a website job and more like a software project. Next.js + Supabase for the application layer, PayFast for ZAR-native payments, and a custom admin console because no off-the-shelf POS handled locker codes and member-tier pricing the way the operator needed. Ops playbooks for staff and drivers were written alongside the code, not after.
Why we didn't use Shopify
Cannabis is a content-policy minefield on hosted commerce platforms. Shopify, BigCommerce, Squarespace — all have reserved the right to drop accounts on a 24-hour notice if a payment processor pushes back. By building on Supabase + PayFast + a self-hosted Next.js front end, dankbud owns the database, owns the checkout, and can switch payment rails without rebuilding the storefront.



Locker pickup is a feature, not a hack
Each order generates a one-time locker code that's shown to the customer post-payment and synced to the driver console. Drivers see a tablet view with a live queue, can mark orders loaded, and the locker code refuses to display until the order is paid. No spreadsheets, no DMs, no "hey did this go out yet?" radio calls.
A member club that plays like a game
Membership isn't a Bronze/Silver/Gold badge — it's a full progression system, all stored in Postgres and applied server-side so nothing is editable from the browser. Members earn XP and level up (Sprout → Sapling → Kush), keep daily check-in streaks, work a quest board, scratch mystery cards for discounts and free joints, climb a live leaderboard, and collect strains in a rarity-graded Stash Book. The "Plug Tree" referral system pays out free joints when your crew orders. It replaces what would have been an R600/month loyalty plug-in — and it's a far stickier reason to come back than a points balance.






Compliance pack shipped with the code
Privacy policy, T&Cs, POPIA notice, age-verification gate, and a printable staff manual covering cash handling, locker codes, refunds, and driver hand-offs. The pack is part of the deliverable — not an afterthought.




- →End-to-end commerce stack — storefront + payments + admin + driver console
- →Operator owns the Postgres database, customer list, and full codebase
- →Zero monthly platform fees beyond Supabase + Vercel + PayFast transaction %
- →Staff onboarded via printable SOPs — no training-call dependency on us
Ready when you are
A 50% deposit gets us started
this week.
June 2026 build slots are open. We reply to every brief within 4 working hours.