Smakelo is a local food marketplace demo built on Stacks: business discovery + reviews (the Yelp half), ordering + real courier delivery with a live tracking map (the DoorDash half), and table-QR dine-in ordering with tabs and a kitchen surface (the Toast half), covering restaurants, coffee shops, and farms in LA / Santa Monica.
It is a fully-implemented public demo: real listing data, real GPS from the courier's phone, real Stripe flows - but sandbox Stripe only, and it never launches commercially. Its second job is hardening Stacks itself: every framework gap gets fixed upstream, released, and consumed here.
Upstream (stacksjs/stacks)
- stacksjs/stacks#2382 - Driver -> Courier rename (breaking)
- stacksjs/stacks#2383 - Stripe Connect module in @stacksjs/payments
- stacksjs/stacks#2384 - Courier tracking HTTP surface + DeliveryStop pickup leg
- stacksjs/stacks#2385 - TOTP QR via ts-qr-codes
App build order
- #2 - Scaffold, config, CI tenant deploy
- #3 - Domain models + migrations
- #4 - Markets, businesses, hours, geo radius search
- #5 - Reviews, photos, owner responses, favorites, claims
- #6 - Menus, modifier groups, availability windows
- #7 - Cart, checkout, orders, destination charges, fees + tips
- #8 - Delivery dispatch + live tracking
- #9 - Dine-in: tables, QR, tabs, split checks, kitchen board
- #10 - Farms: shop mode + CSA subscriptions
- #11 - Payouts + ledger
- #12 - Consumer app UI
- #13 - Merchant portal
- #14 - Kitchen / POS surface
- #15 - Courier app views
- #16 - Admin dashboard extensions
- #17 - Native courier app via Craft
- #18 - Real-data seed pipeline (LA / Santa Monica)
- #19 - Launch gate: demo guards, i18n QA, design pre-flight, deploy
Key stack decisions
- Maps: ts-maps 0.3.2 (vanilla, in stx) + OSM raster tiles; QR: ts-qr-codes 0.1.8 server-side toSvg
- DB: SQLite; geo search = SQL bounding box + haversine; search engine for text only
- Realtime: @stacksjs/realtime (ts-broadcasting) on the existing order/delivery-route channels
- i18n: en + de + nl shipped in v1; multi-market schema (USD/EUR, tax-added vs VAT-inclusive), LA enabled only
- Merchant spine: Business belongsTo Team; portal at /partner; couriers invited, merchant self-delivery supported
- Demo guards: noindex + robots block, demo banner, sandbox badge at checkout, no outbound email/SMS to real businesses