Kelola.in

2026

ReactViteTailwind CSSExpressPrismaPostgreSQLUpstash RedisDocker

A POS and business dashboard for small shops, with a cashier, stock tracking, finance reports, and AI insights.

Links

In a nutshell

Kelola.in is a web app for running a small shop. The cashier page handles sales and discounts, the product page tracks stock in batches, and the finance page shows revenue, expenses, and profit. There is also an AI page for sales predictions and product bundle ideas, plus a receipt scanner that reads a photo instead of making you type every item by hand.

Why I built this

This started as our Dicoding capstone. We wanted a project that felt like a real product, not a demo that only works on one screen. Small shops usually juggle a cashier app, a stock spreadsheet, and a notebook for expenses. We wanted to see if we could put all three in one place and make the data useful.

What it solves

The hard part is not showing a chart. It is keeping the numbers connected. When a sale happens, stock has to go down, the transaction has to be recorded, and profit has to use the cost of the batch that was actually sold. If those updates happen separately, the dashboard becomes fiction. Kelola.in handles them in one flow and scopes everything to the shop that owns the data.

How it's built

Cashier
Product grid, cart, discounts, and checkout. A sale records the items, reduces stock, and feeds the finance page without a second entry.
Stock
Products, categories, restocking, FIFO batches, and low-stock notifications. Cost of goods sold follows the oldest batch first, so profit is based on real batch costs.
Finance
Revenue, expenses, profit, trends, and a filterable transaction history. The dashboard supports week, month, year, and custom ranges, with pagination on long lists.
AI and OCR
Revenue prediction, demand forecasting, bundle suggestions, and receipt photo scanning with a blur check. My teammates built the models and data side; I integrated their service into the Express API and the React screens.
Access
JWT login, bcrypt passwords, custom roles, page-level permissions, and separate data per organization. A user only sees the pages and records their role allows.
Stack
React 19 and Vite on the frontend. Express 5, Prisma, PostgreSQL, and Upstash Redis on the backend. The frontend runs on Vercel, the API on Fly.io, and the database on Supabase.

Result

We shipped it as a working live app at kelolain.vercel.app, with the API on Fly.io. I was the fullstack developer: most of the Express API, the Prisma schema, the auth and permission flow, and a large part of the React app. The AI and data science work came from my teammates; my job was making their service usable inside the product. The live demo uses a test account (test / admin) if you want to click around.

Screenshots

Kelola.in image 1Kelola.in image 2
Next projectLine Follower