Android / Web · Released

Kasir Kaki Lima

An offline-first point-of-sale app for street vendors and small shops, with stock, customer credit, reports and QR table ordering.

Why it matters

What makes it stand out.

01

Keeps selling when the signal drops

Every transaction is saved on the phone first. A stall does not stop serving because the internet went down, and the data follows to the server once the connection returns.

02

One app replaces the notebook

Cashier, stock, customer credit and reports live in one place. The owner knows revenue, remaining stock and who still owes money without recalculating.

03

Customers order from the table

A QR code on the table opens the menu in the customer’s browser. Nothing to install and no extra hardware; staff simply accept the order in the cashier app.

04

A shop assistant that stays cheap

Everyday questions are answered on the device without calling an AI model, so the assistant does not add a cost for every message.

The problem

Small merchants track sales, stock and customer debts in a notebook or from memory. Existing POS apps often need a stable connection and are too complex for a cart or a stall, where signal is not guaranteed.

Who it is for

Street vendors, stalls, small shops and wholesalers who need a cashier on an Android phone that keeps selling while offline.

Key features

  1. A cashier that works without internet

    Transactions, products, stock and customer credit are stored on the device and synchronised to the server when a connection is available.

  2. Complete transactions

    A product catalogue with variants and add-ons, cash and non-cash payment, and receipts printed to a Bluetooth thermal printer or shared digitally.

  3. Stock and customer credit

    Stock cards, stock counts, low-stock notifications, and customer debts with instalments and due-date reminders.

  4. Business reports

    Sales, cash flow, best-selling products and a daily summary, all computed on the device.

  5. Shop assistant

    Ask about the state of the shop in everyday language and get help recording small things. Simple questions are answered locally, and an AI model is only used for the ones that need analysis.

  6. QR ordering at the table

    Customers scan a QR code, browse the menu in a browser and send an order that staff accept in the cashier app. Nothing to install and no payment on the customer side.

The same approach can be adapted for

  • Point of sale for cafes, canteens and food outlets
  • Field sales apps that must work offline
  • QR self-ordering for restaurants
Discuss a similar need

Architecture

The app is written in Flutter and organised by feature. Shared infrastructure such as the database, synchronisation and services lives in core, and each feature such as cashier, stock, customer credit and reports has its own module.

The primary data lives on the device. Drift on top of SQLite is the source of truth for transactions, products, stock and credit. A sync layer pushes changes to Supabase when a connection exists, so a sale never waits for the network.

The customer ordering page is a separate project: a static site in HTML, CSS and JavaScript with no build step, deployed on Cloudflare Workers.

Implementation details

Offline first. Every cashier operation writes to the local database. Synchronisation is a background process, not a precondition for selling.

A three-layer assistant. Each message to the shop assistant goes through local intent matching, then a cache of answers, and only then an AI model. Most everyday questions never reach an API, which keeps it fast and cheap. Actions that change data always go through a confirmation card.

A QR page with no table access. The customer site never reads or writes a table directly. It only calls a few database functions opened to anonymous users, and voucher discounts and quotas are validated again on the server.

Status by polling. Order status is checked every few seconds instead of over a realtime connection. This is deliberate, so realtime access does not have to be opened to anonymous users.

A daily summary without a server. Yesterday’s sales summary is computed on the device when the app opens, so no server-side scheduler is needed.

Availability

The app is available on Google Play.

What can be verified

  • More than 30 feature modules in the app, including shifts, attendance, branches, promotions, vouchers and cashback.
  • The database schema is managed through 77 migration files and four edge functions on Supabase.
  • Available in Indonesian and English.
  • Available on Google Play. The source code is private.

Screenshots

Need something similar?

Tell us what is close to Kasir Kaki Lima and what is different about your case. You get a direct reply about scope and platform.

Request a Project