Portfolio / System Ops / lalafun-pos

Un mese per costruirlo.
Un giorno a settimana guadagnato.

Gestisco un ristorante di pollo fritto. Perdevo un'intera giornata ogni settimana in amministrazione — ricopiare le spese sul registro, esportare in Excel, calcolare le buste paga per 13 dipendenti a mano. Quattro settimane di sviluppo dopo, bastano due ore.

ClienteLalaFun (ristorante proprio)
AmbitoPOS · Inventario · Spese · Buste paga
Team13 dipendenti · ~200 transazioni/giorno
Durata4 settimane · 2026
Cosa abbiamo costruito

Un'unica app che gestisce tutto il locale.

Un'installazione su ogni telefono del turno e sul dispositivo del titolare. Sei moduli, un database, un accesso. Nessun componente aggiuntivo, nessun plugin, nessun foglio Excel separato in nessun punto del flusso. Costruito specificamente per un locale indonesiano di ristorazione a punto unico con la realtà del cassetto contanti — non un SaaS generico adattato a forza.

Modulo 01

Point of Sale

Cassa in due tocchi ottimizzata per i menu di pollo fritto. Separa contanti, QRIS, bonifici bancari e ordini online (GoFood / GrabFood) in cassetti distinti. Stampa in un'unica azione lo scontrino termico per la cucina e la ricevuta per il cliente.

RicevuteCassetti separatiOnline
Modulo 02

Magazzino & Stock

Ogni vendita detrae automaticamente dallo stock. Avvisi di scorte basse prima che il locale esaurisca la merce durante il servizio. Carico fornitore in un'unica schermata — scansione, quantità, prezzo, fatto.

Detrazione autoAvvisiCarico merce
Modulo 03

Registro spese

Ogni rupia uscita dal cassetto viene registrata al POS nel momento in cui viene pagata. Categorizzata, collegata alla fonte di cassa, con foto della ricevuta allegata. Sostituisce il registro cartaceo e l'export mensile su Excel in un solo gesto.

CategorizzataFoto ricevuta
Modulo 04

Presenze

Timbratura con selfie e geofence GPS: nessuno può timbrare da casa. Gestisce tre turni (mattina / pomeriggio / sera). Ritardi, uscite anticipate e assenze si trasferiscono direttamente nel calcolo delle buste paga.

SelfieGPS fenceTurni
Modulo 05

Buste paga

Stipendio base più bonus presenze, più trattenute e anticipi — tutto calcolato in tempo reale durante il mese. Si preme "chiudi mese" il 28 e il prospetto pagamenti è pronto. Stampa, conta i soldi, distribuisce.

Calcolo liveTrattenute & anticipi
Modulo 06

Report titolare

Un dashboard, il telefono del titolare. Vendite giornaliere rispetto a ieri, spese mensili per categoria, costo buste paga, liquidità disponibile. Si entra in qualsiasi dato per vedere le transazioni grezze che lo compongono.

KPI liveDrill-down
● Il problema

L'amministrazione divorava ogni domenica.

Ogni giorno ricopiavo le spese della giornata su un registro rilegato — ghiaccio, parcheggio, prodotti per la pulizia, bolletta del gas. Una volta al mese passavo un'intera giornata a esportare tutto su Excel come backup. Nessun dato parlava con gli altri.

Se volevo sapere quanto avevo speso in packaging il mese scorso, l'unica risposta era: sfogliare le pagine.

"Potevo gestire il locale oppure gestire la burocrazia. Mai le due cose insieme." — titolare, LalaFun
Registro Spese 14 Feb '26
Ice (3 packs)45,000
Ojek parking5,000
Cooking oil120,000
Cooking oil (5L)165,000
Dish soap28,000
LPG gas 12kg180,000
Wheat flour95,000
Packaging box M240,000
Electricity bill680,000
Manuale 8 ore / sett.
● La soluzione

Tutto, in un'app, nel momento in cui accade.

Ogni spesa — un pacco di ghiaccio, la bolletta della luce, uno scontrino del parcheggio — viene registrata al POS nel momento in cui viene pagata, collegata al cassetto contanti o alla cassaforte. Il registro è sparito. Il backup mensile su Excel si fa da solo.

Un dashboard per il responsabile raccoglie tutto: vendite del giorno per metodo di pagamento, spese mensili per categoria, obiettivi rispetto ai dati reali. Apro l'app, vedo il locale.

9:41 ●●●● ◐ ▮▮▮
Dashboard
Sabato · 14 Feb
L
Vendite oggi
Rp 4,248,500
+18% vs. ieri · 208 ordini
Spese
Rp 380K
Obiettivo mensile
76%
Vendite · ultimi 7 giorni
Materie prime Rp 1.8M
Operazioni Rp 420K
Packaging Rp 310K
POS
Ordini
Stock
Dati
● Secondo problema

Le buste paga erano due ore di calcoli su foglio Excel.

Tredici dipendenti, tre turni al giorno, presenze tracciate su foglietti di carta. A fine mese verificavo chi aveva lavorato e quando, calcolavo a mano la percentuale del bonus presenze, e inserivo ogni riga in un foglio di calcolo.

Due ore se andava tutto bene. Di più quando mancava un foglietto o qualcuno contestava un turno.

Ayu
Mattina
07:0215:00
Budi
Pomeriggio
10:45
Citra
Sera
assente?
Dimas
Mattina
06:5815:04
Eka
Sera
14:5022:10
Fajar
Pomeriggio
11:00
Gita
Mattinaritardo
07:4515:00
● La soluzione

Timbratura con il viso. Le buste paga si calcolano da sole.

I dipendenti timbrano dal terminale POS con un selfie e verifica GPS — non si può falsificare da casa, e il foglietto non può andare perso. Turno, percentuale presenze, bonus e penali si calcolano man mano che il mese avanza.

Quando arriva il giorno di paga, apro la scheda buste paga, leggo il numero, conto i soldi. Dieci minuti, fatto.

9:41 ●●●● ◐ ▮▮▮
Buste paga
Feb 2026 · 13 dipendenti
Pronto
A
Ayu Pramesti
26 days · 100%
Rp 3.240K
B
Budi Santoso
25 days · 96%
Rp 3.105K
C
Citra Wulandari
24 days · 92%
Rp 2.980K
D
Dimas Pratama
26 days · 100%
Rp 3.240K
E
Eka Saputra
22 days · 85%
Rp 2.785K
Totale buste paga · Feb
Rp 38.420K
Print
POS
Ordini
Stock
Team
● Terzo problema

Una domenica sera siamo rimasti senza pollo.

Lo stock viveva su una lavagna in cucina. Chi si ricordava di cancellare le voci lo faceva. Chi no, non lo faceva. Per due volte sono entrato e ho trovato le scatole packaging esaurite con una coda piena di ordini online in attesa.

Nessun preavviso, nessun tasso di consumo, nessun punto di riordino. Solo un pennarello e la speranza che qualcuno stesse prestando attenzione.

STOCK — Dom
Chicken?? kg Flour2 sacks Oil 5L3 Oil 5L1? Box Mlow Box Lok Sambal jar~15 Rice6 kg LPG2 LPG1
← chi ha cancellato?
esaurito 21:40 → persi ~18 ordini
● La soluzione

Lo stock si detrae da solo. Avvisa prima che finisca.

Ogni vendita sottrae automaticamente la quantità giusta dall'SKU giusto — la mappa delle ricette si configura una volta, poi funziona e basta. Quando lo stock scende sotto il punto di riordino rispetto alla velocità di vendita del giorno, il titolare riceve una notifica push quella mattina.

Le consegne vengono caricate sulla stessa app — scansione, quantità, fornitore, foto della ricevuta. La lavagna ora è vuota. In cucina preferiscono così.

9:41 ●●●● ◐ ▮▮▮
Stock
48 SKUs · 2 avvisi
Basso
!
Coscia di pollo
4.2 kg · riordinare ora
1.8 giorni
!
Scatola packaging M
28 pz · riordinare ora
0.6 giorni
~
Olio da cucina 5L
2 taniche · attenzione
3.2 giorni
Farina di frumento
24 kg · ok
6.1 giorni
LPG 12kg
3 bombole · ok
9.0 giorni
Valore inventario
Rp 12.8M
Carica
POS
Ordini
Stock
Team
Prima & dopo

Com'era una domenica.

La domenica avrebbe dovuto essere il mio giorno. Invece era il giorno del recupero — l'unico giorno in cui potevo sedermi e sbrogliare la settimana. Ecco cosa è cambiato.

Prima Domenica · 9h 30m
  • 0:00inizioRaccogliere le ricevute delle spese della settimana dal cassetto ops, dalla sala dipendenti, dal portafoglio.
  • 0:30+30 minRicopiare ogni scontrino a mano nel registro rilegato.
  • 3:00+3 oreVerificare il cassetto contro i report di chiusura giornata — cercare uno scarto di 15K per 40 minuti.
  • 4:30+4 ore 30Aprire Excel. Riscrivere il registro nel foglio mensile. Correggere una formula che qualcuno ha rotto.
  • 6:30+6 ore 30Raccogliere i foglietti delle presenze della settimana dalla cartella del responsabile turno.
  • 8:00+8 oreTelefonare a un dipendente per confermare un turno di martedì. Risposta in nota vocale: "Ho dimenticato di firmare."
  • 9:30+9 ore 30A metà dei calcoli per le buste paga. Mi accorgo di aver mancato una penale per ritardo.
9h 30m
Dopo Domenica · 20 min
  • 0:00inizioAprire l'app sul divano. Un'occhiata alla riconciliazione del cassetto di ieri — torna.
  • 0:05+5 minScorrere il registro spese. Due foto da ricategorizzare. Tap, tap, fatto.
  • 0:10+10 minControllare l'avviso stock di prima — il pollo è stato riordinato dal responsabile turno venerdì.
  • 0:15+15 minDare un'occhiata all'anteprima buste paga. In linea. Si chiude da sola il 28.
  • 0:20+20 minPosare il telefono. Uscire.
20m · 3,5% di prima
Come è stato costruito

Quattro settimane, dall'inizio alla fine.

01

Settimana 1 — design

Mappato ogni attività amministrativa che svolgevo a mano. Eliminato tutto ciò che non era essenziale per un locale a punto unico — nessuna ricetta, nessun albero degli ingredienti, nessun CRM clienti. Solo le cose che riscrivevo davvero ogni settimana.

02

Settimane 2–3 — sviluppo

React Native + Expo sul telefono, PHP + MySQL sul backend. Sincronizzazione offline-first dal primo giorno — la cucina non si ferma quando il wi-fi va via. Audit log su ogni modifica, così nulla sparisce in silenzio.

03

Settimana 4 — lancio

Formati 13 dipendenti su turni mattina, pomeriggio e sera. SOP scritto in Bahasa. Registro e fogli di calcolo dismessi la settimana dopo. Aggiornamenti over-the-air ogni volta che qualcosa si inceppa.

Risultati · numeri reali dal sistema in produzione

Otto mesi dopo, ecco cosa dice il database.

Ogni numero qui sotto è estratto dal database in produzione — non una stima da presentazione. I contatori partono quando si scorre fino a qui.

0 hrs
Ore di amministrazione risparmiate
6 ore/settimana × 52 settimane — un mese intero di tempo del titolare recuperato
Rp 0M
Buste paga calcolate automaticamente
in 8 mesi · zero contestazioni, zero ricalcoli manuali
0
Avvisi scorte basse inviati
individuati prima che il locale restasse senza merce — 0 ordini persi dall'avvio
0%
Riconciliazione cassetto
240 chiusure giornata · scarto cassetto sotto Rp 5K nel 99,4% dei casi
0min
Tempo mediano di chiusura buste paga
da 1 ora a 14 minuti · tap chiudi, stampa, conta i soldi
Sotto il cofano

Costruito per un locale, non per una presentazione.

La tecnologia è volutamente poco glamour. Ogni decisione ha risposto a una domanda: cosa succede quando il wi-fi cade durante il servizio di punta e 40 ordini online sono in coda?

Architettura

Offline-first, server-authoritative

Il telefono è la fonte di verità per i prossimi 30 secondi; il server è la fonte di verità per tutto il resto. Ordini, vendite e detrazioni stock vengono scritti prima in locale, poi sincronizzati — la cucina non si ferma se cade la connessione.

React Native · SQLite cache · WAL sync
Stack

React Native + PHP / MySQL

Expo per gli aggiornamenti OTA: le correzioni arrivano in minuti, non in settimane di app store. PHP + MySQL sul backend perché il costo di hosting è $6/mese e il cugino del titolare può leggere il codice se succede qualcosa a chi lo gestisce.

Expo · PHP 8.2 · MySQL 8 · Nginx
Integrità dei dati

Audit log su ogni modifica

Ogni vendita, annullamento, spesa, modifica alle buste paga lascia una riga con l'utente, il timestamp e il valore prima/dopo. Nulla sparisce in silenzio. Se un numero sembra sbagliato una settimana dopo, si vede esattamente chi lo ha toccato e com'era prima.

Append-only log · soft deletes · time-travel reads
Hardware

Funziona sui telefoni che il personale già possiede

Nessun terminale POS personalizzato, nessun tablet proprietario. Un Android condiviso alla cassa per il checkout, una stampante termica (ESC/POS via Bluetooth) per le ricevute, e il telefono del titolare per il dashboard. Costo hardware totale: meno di Rp 2M.

Android 10+ · Bluetooth thermal · QRIS scanner
Integrazioni

Ordini online, QRIS, WhatsApp

Gli ordini GoFood e GrabFood entrano nella stessa coda degli ordini di cassa. I pagamenti QRIS si riconciliano automaticamente con il cassetto. Le buste paga vanno su WhatsApp quando il mese si chiude — niente più buste stampate.

Merchant APIs · QRIS callback · WA Business
Sicurezza

Il titolare vede tutto, il personale vede la propria corsia

Permessi basati sui ruoli dal primo giorno. I cassieri possono prendere ordini e registrare spese, ma non possono annullare, modificare le buste paga né vedere i margini. Ogni azione elevata richiede il PIN del titolare.

RBAC · PIN elevation · device binding
Successivo → SNAP self-photo

Qualcosa di
rotto come questo?

Una chiamata di valutazione gratuita. Le diciamo la soluzione più economica che risolve il problema.