Portfolio / Ops & Systèmes / lalafun-pos

Un mois de développement.
Un jour par semaine retrouvé.

Je gère un restaurant de poulet frit. Je perdais une journée entière chaque semaine en gestion administrative — recopier les dépenses dans un registre, exporter vers Excel, calculer la paie de 13 employés à la main. Quatre semaines de développement plus tard, c'est devenu deux heures.

ClientLalaFun (restaurant personnel)
PérimètrePOS · Inventaire · Dépenses · Paie
Équipe13 employés · ~200 tx/jour
Calendrier4 semaines · 2026
Ce que nous avons construit

Une seule application pour piloter tout le restaurant.

Une installation sur chaque téléphone de quart et sur l'appareil du propriétaire. Six modules, une seule base de données, une seule session. Aucun module complémentaire, aucun plugin, aucune feuille de calcul séparée dans le flux. Conçu spécifiquement pour un restaurant indonésien à point de vente unique — pas un SaaS générique adapté à la force du poignet.

Module 01

Point of Sale

Encaissement en deux appuis, optimisé pour les formules poulet frit. Sépare automatiquement espèces, QRIS, virement bancaire et commandes en ligne (GoFood / GrabFood) dans des tiroirs distincts. Imprime le ticket cuisine et le reçu client en une seule action.

ReçusTiroir séparéEn ligne
Module 02

Inventaire & Stock

Chaque vente déduit automatiquement du stock. Alertes de stock bas avant la rupture en service. Saisie des livraisons fournisseurs en un écran — scan, quantité, prix, terminé.

Déduction autoAlertesRéception
Module 03

Suivi des dépenses

Chaque rupiah sorti de la caisse est enregistré au POS au moment du paiement. Catégorisé, rattaché à une source de trésorerie, photo du justificatif jointe. Remplace le registre papier et l'export Excel mensuel en un seul geste.

CatégoriséJustificatif photo
Module 04

Présences

Pointage par selfie avec géofence GPS — impossible de pointer depuis chez soi. Gestion de trois quarts (matin / après-midi / soir). Retards, départs anticipés et absences intégrés directement dans le calcul de paie.

SelfieGPS fenceQuarts
Module 05

Paie

Salaire de base plus prime de présence, pénalités et avances — tout calculé en temps réel tout au long du mois. Appuyez sur « clôturer le mois » le 28 et la feuille de paie est prête. Imprimez, comptez les espèces, distribuez.

Calcul en directPénalités & avances
Module 06

Rapports propriétaire

Un tableau de bord, sur le téléphone du propriétaire. Ventes du jour vs. hier, dépenses du mois par catégorie, charge salariale, trésorerie disponible. Cliquez sur n'importe quel chiffre pour voir les transactions brutes derrière.

KPIs en directDétail
● Le problème

L'administratif dévorait chaque dimanche.

Chaque jour, je recopiais les dépenses de la journée dans un registre cartonné — glace, parking, produits d'entretien, facture de gaz. Une fois par mois, je passais une journée entière à tout exporter dans Excel comme sauvegarde. Rien ne communiquait avec le reste.

Si je voulais savoir ce que j'avais dépensé en emballages le mois précédent, la seule réponse était : feuilleter les pages.

« Je pouvais gérer le restaurant ou gérer la paperasse. Jamais les deux. » — propriétaire, LalaFun
Livre des dépenses 14 Feb '26
Ice (3 packs)45,000
Parking ojek5,000
Huile de cuisson120,000
Huile de cuisson (5L)165,000
Liquide vaisselle28,000
GPL gaz 12kg180,000
Farine de blé95,000
Boîte emballage M240,000
Facture électricité680,000
Manuel 8 h / sem.
● La solution

Tout, dans une seule application, en temps réel.

Chaque dépense — un sachet de glaçons, la facture d'électricité, un justificatif de parking — est enregistrée au POS au moment du paiement, rattachée au tiroir-caisse ou au coffre. Le registre a disparu. L'export Excel mensuel se fait tout seul.

Un tableau de bord gestionnaire centralise tout : ventes du jour par mode de paiement, dépenses du mois par catégorie, objectifs vs. réalisé. J'ouvre l'application, je vois le restaurant.

9:41 ●●●● ◐ ▮▮▮
Tableau de bord
Samedi · 14 fév
L
Ventes du jour
Rp 4,248,500
+18% vs. hier · 208 commandes
Dépenses
Rp 380K
Objectif mensuel
76%
Ventes · 7 derniers jours
Matières premières Rp 1.8M
Opérations Rp 420K
Emballages Rp 310K
POS
Commandes
Stock
Données
● Deuxième problème

La paie représentait deux heures de calculs sur tableur.

Treize employés, trois quarts par jour, présences suivies sur des fiches papier. En fin de mois, je vérifiais qui était venu quand, calculais le pourcentage de prime de présence à la main, et reportais chaque ligne dans un tableur.

Deux heures quand tout se passait bien. Plus longtemps quand une fiche était perdue ou qu'un quart était contesté.

Ayu
Matin
07:0215:00
Budi
Après-midi
10:45
Citra
Soir
congé ?
Dimas
Matin
06:5815:04
Eka
Soir
14:5022:10
Fajar
Après-midi
11:00
Gita
Matinretard
07:4515:00
● La solution

Pointage par selfie. La paie se calcule toute seule.

Les employés pointent depuis le terminal POS avec un selfie et une vérification GPS — impossible de tricher depuis chez soi, et la fiche ne peut pas disparaître. Quart, taux de présence, prime et pénalités se calculent en temps réel tout au long du mois.

Le jour de paie, j'ouvre l'onglet paie, je lis le chiffre, je compte les espèces. Dix minutes, c'est fait.

9:41 ●●●● ◐ ▮▮▮
Paie
Fév 2026 · 13 employés
Ready
A
Ayu Pramesti
26 j · 100%
Rp 3.240K
B
Budi Santoso
25 j · 96%
Rp 3.105K
C
Citra Wulandari
24 j · 92%
Rp 2.980K
D
Dimas Pratama
26 j · 100%
Rp 3.240K
E
Eka Saputra
22 j · 85%
Rp 2.785K
Paie totale · Fév
Rp 38.420K
Print
POS
Commandes
Stock
Équipe
● Troisième problème

On s'est retrouvé sans poulet un dimanche soir.

Le stock vivait sur un tableau blanc dans la cuisine. Ceux qui pensaient à rayer les articles le faisaient. Les autres non. Deux fois, je suis arrivé pour constater qu'il n'y avait plus de boîtes d'emballage avec une file entière de commandes en ligne en attente.

Pas d'alerte précoce, pas de taux de consommation, pas de point de réapprovisionnement. Juste un marqueur et l'espoir que quelqu'un était attentif.

STOCK — Dim
Chicken?? kg Flour2 sacks Oil 5L3 Oil 5L1? Box Mlow Box Lok Sambal jar~15 Rice6 kg LPG2 LPG1
← qui a barré ?
rupture 21h40 → ~18 commandes perdues
● La solution

Le stock se déduit tout seul. Il vous alerte avant la rupture.

Chaque vente soustrait automatiquement la bonne quantité du bon article — la table des recettes est configurée une fois, ensuite ça tourne tout seul. Quand le stock passe sous le seuil de réapprovisionnement selon la vélocité des ventes du jour, le propriétaire reçoit une notification push le matin.

Les livraisons sont saisies sur la même application — scan, quantité, fournisseur, photo du bon de livraison. Le tableau blanc est désormais vide. La cuisine préfère ça.

9:41 ●●●● ◐ ▮▮▮
Stock
48 SKUs · 2 alertes
Low
!
Cuisse de poulet
4.2 kg · commander now
1.8 j
!
Boîte emballage M
28 pcs · commander now
0.6 j
~
Huile de cuisson 5L
2 bidons · surveiller
3.2 j
Farine de blé
24 kg · ok
6.1 j
LPG 12kg
3 bouteilles · ok
9.0 j
Valeur du stock
Rp 12.8M
Réceptionner
POS
Commandes
Stock
Équipe
Avant & après

À quoi ressemblait un dimanche avant.

Le dimanche devait être ma journée. C'était en réalité le jour de rattrapage — le seul moment où je pouvais m'asseoir et démêler la semaine. Voilà ce qui a changé.

Avant Dimanche · 9h 30m
  • 0:00débutRécupérer les justificatifs de dépenses de la semaine dans le tiroir ops, la salle du personnel, mon portefeuille.
  • 0:30+30 minRecopier chaque bon dans le registre cartonné à la main.
  • 3:00+3 hRapprocher le tiroir-caisse des rapports de fin de journée — chercher un écart de 15k pendant 40 minutes.
  • 4:30+4 h 30Ouvrir Excel. Retaper le registre dans la feuille mensuelle. Corriger une formule que quelqu'un a cassée.
  • 6:30+6 h 30Récupérer les fiches de présence de la semaine sur le presse-papiers du responsable de quart.
  • 8:00+8 hAppeler un employé pour confirmer un quart du mardi. Réponse vocale : « j'ai oublié de signer. »
  • 9:30+9 h 30À mi-chemin des calculs de paie. Je réalise que j'ai oublié une pénalité de retard.
9h 30m
Après Dimanche · 20 min
  • 0:00débutOuvrir l'appli depuis le canapé. Vérifier le rapprochement de caisse d'hier — ça correspond.
  • 0:05+5 minParcourir le journal des dépenses. Deux photos à recatégoriser. Tap, tap, c'est fait.
  • 0:10+10 minConsulter l'alerte stock de tout à l'heure — le poulet a été commandé par le responsable de quart vendredi.
  • 0:15+15 minJeter un œil à l'aperçu de paie. Dans les clous. Se clôture tout seul le 28.
  • 0:20+20 minPoser le téléphone. Aller quelque part.
20m · 3,5% d'avant
Comment c'est né

Quatre semaines, de bout en bout.

01

Semaine 1 — conception

Cartographie de chaque tâche administrative faite à la main. Suppression de tout ce qui n'était pas indispensable pour un restaurant à point de vente unique — pas de recettes, pas d'arbres d'ingrédients, pas de CRM client. Uniquement ce que je retapais vraiment chaque semaine.

02

Semaines 2–3 — développement

React Native + Expo côté téléphone, PHP + MySQL côté serveur. Synchronisation offline-first dès le premier jour — la cuisine ne s'arrête pas quand le Wi-Fi clignote. Journal d'audit sur chaque mutation pour que rien ne disparaisse silencieusement.

03

Semaine 4 — déploiement

Formation de 13 employés sur les quarts matin, après-midi et soir. Procédure opérationnelle standard rédigée en Bahasa. Registre et tableurs retirés la semaine suivante. Mises à jour en OTA dès qu'un problème se présente.

Résultats · chiffres réels du système en production

Huit mois après, voilà ce que dit la base de données.

Chaque chiffre ci-dessous est extrait de la base de données de production — pas d'une estimation de pitch deck. Les compteurs démarrent quand vous faites défiler cette page.

0 hrs
Heures d'administration économisées
6 h/semaine × 52 semaines — un mois entier rendu au propriétaire
Rp 0M
Paie calculée automatiquement
sur 8 mois · zéro litige, zéro recalcul manuel
0
Alertes de stock bas déclenchées
détectées avant rupture — 0 incident de commande manquée depuis le lancement
0%
Taux de rapprochement de caisse
240 clôtures journalières · écart de caisse sous Rp 5K dans 99,4 % des cas
0min
Temps médian de clôture de paie
de 1 heure à 14 minutes · appuyer sur clôturer, imprimer, compter les espèces
Sous le capot

Conçu pour un restaurant, pas pour un pitch deck.

La technologie est délibérément sans fioritures. Chaque décision répondait à une seule question : que se passe-t-il quand le Wi-Fi tombe en plein coup de feu avec 40 commandes en ligne dans la file ?

Architecture

Offline-first, serveur autoritaire

Le téléphone est la source de vérité pour les 30 prochaines secondes ; le serveur l'est pour tout ce qui est plus ancien. Commandes, ventes et déductions de stock s'écrivent localement d'abord, puis se synchronisent — la cuisine ne s'arrête pas parce que l'antenne est tombée.

React Native · SQLite cache · WAL sync
Stack

React Native + PHP / MySQL

Expo pour les mises à jour OTA — les correctifs partent en minutes, pas en semaines d'App Store. PHP + MySQL côté serveur parce que l'hébergement coûte 6 $/mois et que le cousin du propriétaire peut lire le code si je disparais du jour au lendemain.

Expo · PHP 8.2 · MySQL 8 · Nginx
Intégrité des données

Journal d'audit sur chaque mutation

Chaque vente, annulation, dépense ou modification de paie laisse une ligne avec l'utilisateur, l'horodatage et la valeur avant/après. Rien ne disparaît silencieusement. Si un chiffre semble faux une semaine plus tard, vous voyez exactement qui l'a touché et ce qu'il était avant.

Append-only log · soft deletes · time-travel reads
Matériel

Fonctionne sur les téléphones déjà utilisés par les employés

Pas de terminal POS sur mesure, pas de tablette propriétaire. Un Android partagé au comptoir pour l'encaissement, une imprimante thermique (ESC/POS via Bluetooth) pour les reçus, et le téléphone du propriétaire pour le tableau de bord. Coût total du matériel : moins de Rp 2M.

Android 10+ · Bluetooth thermal · QRIS scanner
Intégrations

Commandes en ligne, QRIS, WhatsApp

Les commandes GoFood et GrabFood s'intègrent dans la même file que les commandes sur place. Les paiements QRIS se rapprochent automatiquement de la caisse. Les bulletins de paie partent via WhatsApp à la clôture du mois — fini les enveloppes imprimées.

Merchant APIs · QRIS callback · WA Business
Sécurité

Le propriétaire voit tout, le personnel voit son périmètre

Permissions par rôle dès le premier jour. Les caissiers peuvent prendre des commandes et saisir des dépenses, mais ne peuvent pas annuler, modifier la paie ni voir les marges. Chaque action élevée requiert le code PIN du propriétaire.

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

Vous avez
le même problème ?

Appel de cadrage gratuit. On vous dit ce qui coûte le moins cher à régler.