Skip to content

/ Case study — Landing

Ayam Bakar Asap Jimbaran

Now the restaurant runs its own storefront. Staff change the menu, catering, promos, even the look of the page — all from one admin, without waiting on a developer.

RoleFull-stack
Year2025
TypeLanding
Next.jsTypeScriptDrizzleTursoTailwind CSS
abaj-api · admin Live recreation

Pesanan

Kelola & perbarui status pesanan secara real-time.

Cari nomor order / voucher…Semua status ▾Semua mode ▾
OrderPelangganItemModeTotalWaktuStatus
ABJ-1042Sophia LaurentAyam Bakar Dada · 2xAntarRp82.00016 Jul, 14:22Disiapkan
ABJ-1041Rizky PratamaPaket Komplit · 2xAmbilRp90.00016 Jul, 14:08Siap
ABJ-1040PT Sinar MasPaket Komplit · 120xReservasiRp5.400.00016 Jul, 13:51Dibayar
ABJ-1039Dewi AnggrainiSate Lilit (5 Tusuk) · 3xAntarRp87.00016 Jul, 13:30Diantar
ABJ-1038Bagus WirawanAyam Bakar Madu · 1xAmbilRp35.00016 Jul, 13:02Selesai

One backend, every channel — delivery, pickup and catering land on the same board.

The actual back office — delivery, POS and catering orders on one lifecycle.

ayambakarasapjimbaran.co.idFIG.00 — Overview
  • Content-as-data — menu/catering/appearance, no deploy
  • One backend feeds storefront + delivery + POS
  • Drizzle → Turso (edge) · server-side price rules
LandingAyam Bakar Asap Jimbaran
Single-source SSOT
Backend
Menu · catering · banners
Admin
Direct · GoFood · GrabFood
Ordering
Drizzle · Turso (edge)
Data

/ What it does

Run your whole business from one simple dashboard

Menu, prices, promos, even how the storefront looks — all editable from one admin, no developer needed. Change it once, and it updates everywhere: the website, the delivery app, and the till.

Update your storefrontStep 1 / 5

Open the admin

One dashboard for everything.

MenuCateringPromos
  • No developer needed

    Your team changes the menu and prices themselves, anytime.

  • One place, everywhere

    Edit once — the website, app, and till all stay in sync.

  • Reach customers everywhere

    Your own storefront plus GoFood and GrabFood, from one system.

Problem

A restaurant brand outgrows a brochure site the moment its menu changes weekly, catering packages come and go, promos rotate, and orders arrive across three channels. Editing any of that shouldn’t require a developer or a redeploy.

Approach

Build the brand site as the front of a small commerce platform. One typed backend on an edge database is the single source of truth for menu, catering, combos, banners — even the storefront’s appearance — and an authenticated admin lets staff change all of it live.

  • Next.js app rendering the public brand and the authenticated admin from one codebase.
  • Content — menu, catering packages, combos, banners, appearance — lives in the database, editable without a deploy.
  • Ordering fans out to the brand’s own flow plus GoFood and GrabFood, meeting customers where they already are.

A brand site is a read view of a business. Model the business, and the site edits itself.

Architecture

Next.js (brand storefront + admin)
  ├─ public: menu · catering · combos · banners  ── read from SSOT
  ├─ admin:  appearance · pricing · promos        ── auth-gated writes
  └─ data:   Drizzle ORM → Turso (libSQL, edge)
Ordering → direct flow · GoFood · GrabFood

Key decisions & trade-offs

  • Content as data, not markup. Menu, catering, and even the storefront’s look live in the DB so non-engineers run the business day to day.
  • One backend, many faces. The same source of truth feeds the brand site, the delivery storefront, and the POS — no duplicated product catalogs to drift apart.
  • Meet customers where they order. Rather than fight the aggregators, the platform routes cleanly to GoFood/GrabFood alongside the brand’s own channel.

Result

A restaurant that runs its own commerce — menu, catering, promos, and storefront appearance — from a single admin, on a backend shared with delivery and point-of-sale.

/ How it’s done

Content as data — live

Edit the menu item; the storefront reflects it instantly. Menu, promos, even appearance are data in one backend — no deploy.

admin · edit
storefront · live
Featured
Nasi Ayam Ulam Bali
Rp 45.000

Content is data, not markup. Non-engineers run the storefront — menu, catering, promos, even its appearance — because it all lives in one typed backend. The same source of truth feeds delivery and POS, and prices are recomputed server-side before any invoice.

01

Content is data, not markup

Menu, catering, combos, banners and the storefront’s look live in the DB. Staff run the business day to day — no developer, no redeploy.

02

One backend, many faces

The same typed SSOT feeds the brand storefront, the delivery app, and the POS — no duplicated product catalogs to drift apart.

03

Pricing where it can be trusted

Prices and promos are recomputed server-side before any invoice; the client never quotes a total it can be trusted on.

04

Edge data, Next.js front

Drizzle on Turso (edge libSQL) behind a Next.js app that renders the public brand and the authenticated admin from one codebase.