Case Study

BukuBengkel

Live

A complete workshop management platform with subscription billing. Track inventory with moving-average cost accounting, generate sales and stock reports, run a built-in loyalty program, and manage subscription plans with QRIS payments.

App Free Paid

Overview

Most small workshops in Indonesia still track inventory on paper or in spreadsheets — prone to errors, slow to reconcile, and impossible to audit. BukuBengkel replaces that with a purpose-built platform that handles the full operational loop: stock in, service out, customer retention, and subscription billing via QRIS.

The Problem

Workshop owners juggle parts inventory, service records, and customer data across disconnected tools. When a part gets used, the cost isn't always obvious — especially with fluctuating supplier prices. Loyalty programs, if any, are manual punch cards. On the business side, monetizing the platform required a billing system that Indonesian workshop owners could actually use — no Stripe, no credit cards, just scan and pay.

What Was Built

A full workshop management platform covering:

  • Inventory tracking with moving-average cost accounting — unit costs auto-adjust with every new purchase
  • Sales and stock reports exportable per period
  • Built-in loyalty program to track repeat customers and reward them automatically
  • Subscription billing with QRIS — multi-tenant payment system with QR code generation, automatic invoice creation, payment confirmation webhooks, and grace period management

Subscription & Billing

BukuBengkel uses a shared Payment Service to handle the full billing lifecycle. Workshop owners register, choose a plan, scan a QRIS code to pay, and the platform activates automatically. When a subscription nears expiry, the system generates a renewal invoice and enters a grace period before suspending access. The payment service supports multiple apps, each with configurable plans, duration, and webhook-based status notifications.

Technical Notes

  • Stack — Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS v4, Drizzle ORM, SQLite (better-sqlite3), better-auth
  • Multi-tenancy — each workshop gets an isolated SQLite database, resolved via subdomain or slug
  • Payments — QRIS via Payment Service with Pakasir integration, QR code rendering on the pay page, and webhook-driven activation
  • Self-hosted — single server deployment via PM2 + Caddy, no Docker, no external DB

View Project All projects →