Skip to content

Karpen Coffee

Karpen Coffee

Our first client: a bilingual site for a coffee shop by the rice fields of Madiun. A 91-item menu, delivery and table bookings on WhatsApp, scheduled promos and a staff panel the Karpen team runs themselves.

karpen.id (opens in a new tab)
  • Website
  • CMS
  • Business system
Karpen Coffee drawn in 3D: the coffee shop at the edge of a rice field, its counter, four seating areas and the staff panel.Karpen Coffee drawn in 3D: the coffee shop at the edge of a rice field, its counter, four seating areas and the staff panel.
Rice-field edge, Pilangbango91 menu items, run from the CMSFour seating areasStaff panel with roles
Rice-field edge, Pilangbango91 menu items, run from the CMSFour seating areasStaff panel with roles

A coffee shop by the rice fields of Madiun, open since 2021

Karpen Coffee is a coffee shop beside the rice fields of Pilangbango, Madiun, open since 2021. Its coffee comes from Ijen and Dampit, the menu has 91 drinks and dishes, and the seats run from a timber-framed room inside to a mezzanine facing the fields, open daily from 10:00 to 23:00. The name comes from carpenter: the owner is a carpenter’s son. Most guests open the site on their phone to check the menu and the opening hours, then order or book a table.

Client
Karpen Coffee
Industry
Coffee shop
Location
Pilangbango, Madiun, East Java
Year
2026
Our role
Design, development, CMS and staff panel

karpen.id today, on a laptop and on a phone

The karpen.id home page on a laptop: the heading "Better days with Karpen.", a photo of the shop under a tree, and buttons to see the menu and book a table.
Home: the shop, its hours and the two buttons guests use most, see the menu and book a table.
The karpen.id menu on a phone: the Signature Beverage category with 32 items, drink photos, prices and add buttons.
The menu by category, with search.
One item on karpen.id: Kopi Susu Karpen at Rp22,000, its description, a note field, the quantity and the add button.
One item: how it’s served, a note and how many.
The karpen.id menu in English on a phone: the heading "The full menu", Drinks and Food, and search.
The same menu, in English.

Every price change went through a developer

The old site was written straight into the code, so every menu or price change went through a developer. When we audited it on 16 October 2026, we also found:

  • The same title and share image on every page, and missing addresses answered as normal pages instead of a 404
  • Both OPEN and CLOSED in the page at once, so screen readers announced both
  • FAQ buttons with no labels, and a menu that was never translated into English
  • No way to choose hot or iced when ordering
  • 545 KB of JavaScript and 23 MB of images, with PNG files up to 3.3 MB, for customers mostly on phones

What's on karpen.id, page by page

Everything guests see is run by the Karpen team from their own staff panel. The screenshots are real, taken from karpen.id.

  1. A home page that answers first

    karpen.id (opens in a new tab)

    When it opens, what’s on offer today, what people order most. Favourites come in tabs, the promo that is live right now shows up by itself, and open or closed is worked out from that day’s hours.

    • Favourites in tabs
    • The promo live now
    • Today’s hours
    The karpen.id home page on a phone: the Pilangbango, Madiun location, the shop’s heading and a photo of guests outside.
  2. 91 items, run by the team

    karpen.id/menu (opens in a new tab)

    Drinks and food by category, with search. Every item has a photo, a price and how it’s served, hot or iced, with add-ons and choices that must be made. An item that runs out is marked "sold out today" in the staff panel instead of being deleted.

    • Search
    • Hot or iced
    • Add-ons
    • Sold out today
    The karpen.id menu on a laptop: category tabs and four drinks with photos, prices and add buttons.
  3. Delivery orders on WhatsApp

    karpen.id/cart (opens in a new tab)

    Guests build their order, choose pick-up or delivery anywhere in Madiun city for Rp7,000, then pay cash or by QRIS. The total already includes the 10% local tax and packaging, and WhatsApp opens with the order neatly written out. When the shop is closed, the page says so.

    • Pick-up or delivery
    • Cash or QRIS
    • Tax worked out for you
    The karpen.id order page: one item, pick-up or delivery, and the button to send it on WhatsApp with the total.
  4. Table bookings and events

    karpen.id/reservasi (opens in a new tab)

    Book a table for 4 to 20 people: pick a date in the next seven days, a time within opening hours, the party size and where to sit. The summary beside it works out the minimum deposit, Rp10,000 a person. For gatherings, office events or birthdays there is a big-order form: large orders, catering packages or hiring the place.

    • 4–20 people
    • Pick where to sit
    • Deposit worked out
    • Big orders and events
    Table booking on karpen.id: date, arrival time and party size, with the summary and minimum deposit beside them.
  5. Promos that run on their schedule

    karpen.id/promo (opens in a new tab)

    The daily lunch package, the Friday lunch and evening packages and the 20% student discount appear and disappear on their own schedule, with a "Live now" label and terms you can open. Promo times follow Madiun’s clock.

    • Live now
    • Filter by kind
    • Terms you can open
    A promo on karpen.id: TGI Friday Package 1, Fridays 11:00–16:00, two packages at Rp28,000 and terms you can open.
  6. Visiting, with hours that are always right

    karpen.id/outlet (opens in a new tab)

    The address with buttons for Google Maps and copying it, opening hours with today highlighted, facilities from Wi-Fi to a prayer room, and seating areas with photos. Special closures are set in the staff panel, so open or closed is never wrong.

    • Google Maps
    • Today highlighted
    • Special closures
    Opening hours on karpen.id: today’s status, Monday to Sunday 10:00–23:00, a kitchen note and the facilities.
  7. A story that starts with carpenter

    karpen.id/our-story (opens in a new tab)

    Where the name Karpen comes from, the place between the rice fields and the railway, and a journey in six chapters since 2021, with photos for each.

    • The name
    • Six chapters
    The karpen.id story page: the heading "Dari kata carpenter.", photos of guests in the shop and a "Since 2021" stamp.
  8. Karpen Kelola, a panel for the staff

    A CMS’s built-in admin is too technical to use behind the counter. So we built the staff a panel of their own: the owner sets each person’s role and permissions, and every change is written to an activity log.

    • Roles and permissions
    • Activity log
    • Prices edited in the list
    • Weekly promo schedule
    • A bottom bar for phones
    The sign-in page of Karpen Kelola, the karpen.id staff panel: email, password and the sign-in button.

One app for the site, the CMS and the staff panel

The site, the CMS and Karpen Kelola are one Next.js app with Payload CMS, on servers in Singapore, so there are not three separate systems to maintain. Everything guests see comes from the CMS:

  • A menu with variants, add-ons and option groups with minimum and maximum rules
  • Scheduled promos, with a "Live now" label calculated from the schedule
  • Opening hours per day and special closures
  • The story, FAQ, gallery, reviews, job openings and outlet details

The first release uses WhatsApp for orders and bookings, with neatly pre-filled messages, because that is where the Karpen team already serves its guests.

A 27-row audit, two directions, then a test for every permission

  1. Audit of the old site

    We listed every feature and flaw of the old site in 27 rows. The new site had to match all of them, then go further.

  2. Two design directions

    A moodboard and two design directions, shown as preview pages. The client picked the fourth prototype on 17 October 2026.

  3. Tokens, components and CMS

    The chosen direction became design tokens and components, then the CMS schema was filled with the real content: 91 menu items, promos, FAQ and story.

  4. Staff panel

    Karpen Kelola was built on the same CMS, with tests for every permission.

  5. Testing

    Business logic (opening status, which promos are live, menu option rules) is tested with Vitest. Customer flows and accessibility are tested with Playwright and axe on phone and desktop, in both languages.

What is measured so far, and what isn't

Menu items the Karpen team manages
91
Source: CMS content, karpen.id · Measured 5 November 2026
Accessibility on a phone
100
Source: Lighthouse 13.5, mobile, median of three runs on karpen.id and karpen.id/menu · Measured 5 November 2026
SEO and best practices
100
Source: Lighthouse 13.5, mobile, median of three runs on karpen.id and karpen.id/menu · Measured 5 November 2026
Serious or critical accessibility violations across 18 pages
0
Source: axe (WCAG 2.1 A/AA) via Playwright, phone and desktop, Indonesian and English · Measured 17 October 2026

What isn't yet: on a phone, the Lighthouse performance score is still 70 because LCP is 6.2 s, mostly from the large photos on the first screen. Total Blocking Time is 82 ms and CLS is 0, so the page neither stalls nor shifts while it loads. Business numbers, such as WhatsApp orders per week, have not been measured yet.

Next.js and Payload, on servers in Singapore

One app for the site, the CMS and the staff panel, so there are not three separate systems to maintain.

  • Next.js 16
  • React 19
  • Payload CMS 3
  • Postgres
  • GSAP
  • Lenis
  • Vitest
  • Playwright
  • axe

See all 91 items at karpen.id

Visit karpen.id

Introductory price · 2 of 3 slots left

Want a site like this for your business? We can build it.

A café, a restaurant, a salon or a shop: a menu, WhatsApp orders, bookings and a panel for your team, shaped around how your business already works. Tell us in a short brief and we reply within one business day.