FloCafe
FloCafe는 구독 없이 무료로 주문·테이블·주방 디스플레이·로컬 데이터를 관리하는 로컬 퍼스트 레스토랑 POS입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Caisse enregistreuse et gestion de commerce — SPA React 19 + Vite + TypeScript, pensée pour les commerces de détail en FCFA.
L'application est un SaaS multi-organisation : un même utilisateur peut appartenir à plusieurs commerces, avec un rôle différent par commerce (propriétaire, gérant, caissier). Elle fonctionne seule en mode démo (données simulées persistées localement) et se branche sur un backend REST sans modifier une ligne d'interface.
État : frontend complet, aucune dépendance backend dans ce dépôt.
bun run lint✔ ·bun run test→ 23 fichiers / 175 tests ✔ ·bun run build✔
| Domaine | Contenu |
|---|---|
| Caisse (POS) | Panier, recherche produit, 5 moyens de paiement (Espèces, Wave, Orange Money, Carte, Crédit partiel), reçu écran + PDF, ventes récentes, clôture de journée |
| Stock | Création/édition d'articles, catégories, réapprovisionnement rapide, alertes de rupture, prix d'achat et marge (réservés aux rôles autorisés) |
| Crédits | Créances clients, encaissements partiels, filtres, historiques par client |
| Dépenses | Saisie et suivi des charges du commerce |
| Bilan | Chiffre d'affaires, marge, trésorerie, répartition par canal de paiement, objectif journalier |
| Accueil | Tableau de bord (tendance des ventes, alertes stock, dernières ventes, clôture) |
| Équipe | Invitation de membres, changement de rôle, retrait — avec hiérarchie des rôles |
| Multi-organisation | Appartenance à plusieurs commerces, changement d'espace, données cloisonnées par organisation |
| Abonnement | Plans Starter et Pro Commerçant |
| Export | Export CSV et PDF comptable (respecte les permissions) |
| UI/UX | Responsive (sidebar ≥ lg, barre inférieure < lg), toasts, modales accessibles (Échap, focus, scroll verrouillé), thème maison |
| Brique | Version | Usage |
|---|---|---|
| React | 19.3 | Interface |
| TypeScript | 5.8 (strict) | Typage |
| Vite | 6.4 | Dev server + build (chunks react / charts / pdf) |
| Tailwind CSS | 4.1 | Design system (@theme dans src/index.css) |
| Zustand | 5 | État persistant (localStorage), mutations optimistes |
| Recharts | 3 | Graphiques (bilan, accueil) |
| jsPDF + autotable | 4 | Reçus et exports PDF |
| Vitest + Testing Library | 5 | Tests unitaires, stores, services, smoke |
| ESLint 10 + Prettier | — | Lint et formatage |
| Bun | ≥ 1.4 | Runtime, gestionnaire de paquets et scripts |
bun.lockest enlockfileVersion: 2: Bun 1.4 ou plus récent est requis. Lepackage-lock.jsona été retiré volontairement (ignoré par.gitignore).
# prérequis : Bun ≥ 1.4
bun install --frozen-lockfile
bun run dev # http://localhost:3000
Aucune configuration n'est nécessaire : sans variable d'environnement, l'application démarre en mode démo avec des données de test réalistes.
Mot de passe commun : demo1234 (mode démo uniquement).
| Utilisateur | Rôle | |
|---|---|---|
| Mamadou Konaté | [email protected] | propriétaire de Boutique Étoile + gérant de Supérette Le Baobab |
| Awa Ndiaye | [email protected] | caissière de Boutique Étoile |
| Koffi Mensah | [email protected] | propriétaire de Supérette Le Baobab |
| Fatou Diop | [email protected] | gérante de Supérette Le Baobab |
Mamadou appartient à deux organisations : utilisez le sélecteur d'espace (sidebar ou profil) pour observer le cloisonnement des données et les différences de permissions.
| Commande | Effet |
|---|---|
bun run dev | Serveur de développement sur le port 3000 (--host 0.0.0.0) |
bun run build | Build de production dans dist/ |
bun run preview | Prévisualisation du build |
bun run lint | tsc --noEmit + eslint src --max-warnings 0 (zéro tolérance) |
bun run test | Tests Vitest (une passe) |
bun run test:coverage | Tests + couverture (seuils bloquants) |
bun run test:watch | Tests en mode watch |
bun run format | Prettier sur src/**/*.{ts,tsx,css} |
bun run clean | Supprime dist/ et server.js |
Toutes les variables client sont préfixées VITE_ et lues uniquement dans
src/config/env.ts.
| Variable | Défaut | Rôle |
|---|---|---|
VITE_API_MODE | mock | mock = données locales ; http = backend REST réel |
VITE_API_BASE_URL | /api | URL de base du backend (ex. https://api.macaisse.app/v1) |
VITE_API_MOCK_LATENCY_MS | 250 (0 en test) | Latence simulée de l'adaptateur démo |
VITE_API_TIMEOUT_MS | 15000 | Délai maximal avant abandon d'une requête |
VITE_AUTH_PHONE | off | on réaffiche la connexion par téléphone (OTP WhatsApp, D2). Masquée tant que les crédits WhatsApp/SMS ne sont pas provisionnés : l'écran d'accès ne montre que e-mail + Google |
DISABLE_HMR | — | true coupe le HMR et le watch (utilisé par l'environnement AI Studio) |
GEMINI_API_KEY | — | Optionnel ; utilisé par src/lib/ai/client.ts (client IA expérimental, non branché à l'UI) |
Exemple .env.local pour brancher un backend :
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗