Medina POS

A till that works offline

Medina POS is a browser cashier app for one-outlet shops in Indonesia. I design and build it on my own. It is in development and not launched yet.

Walk through a cashier’s day
Price, planned
Rp99.000 / month
Runs on
Phone, tablet, laptop
Status
In development
The Medina POS till with five items in the cart and an amber badge reading Offline, sales are still saved. The owner dashboard for Sunday 25 October: net profit Rp330.714 from 72 sales. The daily report with cash and non-cash totals, the day's expenses, and every sale.
The till, the dashboard and the daily report, with demo data.
The till: product grid with barcodes and stock on the left, the cart with a bundle and the total on the right.
The payment dialog: total Rp45.500, five payment methods, quick cash buttons and a keypad.
The till on a phone: two columns of products and a cart bar with the Pay button at the bottom.
Closing a shift: the system expects Rp219.000 in the drawer, the cashier counted Rp217.000, and the dialog warns the drawer is Rp2.000 short.
The owner dashboard: net profit, net sales against last week, items low on stock, and the open shift.
The daily report: profit, cash and non-cash split, expenses, and a table of the day's 72 sales.
Cashier activity: sales, discounts, cancellations, returns and drawer differences for each user.
The product catalogue: products with their variants, each with its own SKU, barcode, stock and price.
The public site: the headline Tetap jualan saat internet putus beside a demo till with an internet switch.

The screens

Scan a barcode or tap a product. A bundle takes stock from each item inside it.

What it does

Offline — transaksi tetap tersimpan

Sells with no internetSales and shifts are saved on the device and sent when it is back online.

Kurang Rp 2.000

Counts the drawerEach shift ends with cash counted against the system.

Rp 50.000Uang Pas

Fast changeQuick cash buttons and a keypad work out the change.

Paket bundle

Bundles and variantsOne SKU and barcode per variant; bundles draw stock from each part.

TunaiQRISDebit

Five ways to payCash, QRIS, transfer, debit and pay later.

Kode Tokotokoawal

One code per shopCashiers sign in with the shop code and their own account.

58 mm80 mm

Thermal receiptsPrints to 58 or 80 mm printers; works with USB and Bluetooth scanners.

MenungguDisetujui

Returns need the ownerCashiers request cancels and returns; the owner approves them.

First, open the shift with a float

The cashier counts the cash already in the drawer. Every sale and every cash in or out is added to it.

Toko Awal Online

Buka shift

Rp 200.000

Buka shift

Penjualan shift ini

  • #0001 · 07.12Rp 45.500Antre
  • #0002 · 07.20Rp 12.000Antre
  • #0003 · 07.31Rp 7.500Antre

Tutup shift

Modal awal
Rp 200.000
Penjualan tunai
Rp 65.000
Kas masuk
Rp 0
Kas sistem
Rp 265.000
Uang fisik di laci
Rp 263.000

Kurang Rp 2.000

  1. Open the shift
  2. Sell offline
  3. Back online
  4. Close the shift

Everything in it

At the till

Features at the till
FeatureDetailWhoState
Barcode and searchUSB or Bluetooth scannerCashierBuilt
Offline sales queueIndexedDB, idempotent syncCashierBuilt
Five payment methodsCash, QRIS, transfer, debit, laterCashierBuilt
DiscountsCapped, logged per cashierCashierBuilt
Receipts and reprints58 or 80 mm thermalCashierBuilt
Shifts and cash movesFloat, cash in, cash outCashierBuilt
Pay laterCustomer tabs, paid off laterCashierBuilt
Orders with a depositDown payment, pick up laterCashierBuilt

For the owner

Features for the owner
FeatureDetailWhoState
Daily dashboardProfit, sales, stock alertsOwnerBuilt
Reports by day, month, yearCSV export at any timeOwnerBuilt
Cashier activityDiscounts, cancels, drawer gapsOwnerBuilt
Products and variantsSKU and barcode per variantOwnerBuilt
BundlesStock drawn from each partOwnerBuilt
Stock in and stock outCost price, supplier, reasonOwnerBuilt
Excel importProducts and stock documentsOwnerBuilt
Return approvalsCashier asks, owner decidesOwnerBuilt

How it is built

How Medina POS is built
PartToolsWhereNote
FrontendNext.js 15, TypeScript, TailwindBrowserPWA
Offline dataDexie, TanStack QueryDeviceQueue
APIGo, net/httpServerREST
DatabasePostgreSQL, row-level securityServerPer shop
MoneyWhole integers, no floatsEverywhereExact
Sign-inEd25519 tokens, lockoutServerRoles
TestsGo tests, Vitest, PlaywrightLocalEnd to end
Way of workingSpecs, then AI agents for FE, BE, QAWorkspaceReviewed

How many sales a day?

60

Rp55per sale

The planned price, Rp99.000 a month, divided by your sales over 30 days. One package: no fee per cashier, device or product.

Not open yet

Medina POS is still being built. Type your shop’s name and the button writes me an email, so I can tell you when it opens.

Buat toko

Jenis toko