🍸 Bar Entys — Commander un cocktail depuis une tablette
Un soir avec des amis, jongler entre les commandes à la voix c'est bien, mais un vrai système de commande self-hosted sur tablette c'est mieux.
Le concept
Bar Entys, c'est mon bar maison. Quand il y a du monde, je voulais éviter les commandes verbales qui se perdent et les oublis de prénom. L'idée : une tablette en accès libre sur laquelle les invités passent commande, et moi je gère ma file derrière.
Fonctionnalités
Interface client (tablette)
- Navigation par catalogues saisonniers : Classic, Noël, Halloween
- Fiche cocktail : photo, nom, liste d'ingrédients
- Saisie du prénom avec auto-complétion (basé sur l'historique)
- Validation de commande en un clic
- Session permanente → pas de login à répéter


Dashboard Admin
- File d'attente FIFO (le plus ancien = prioritaire)
- Actions par commande : 👳♂️Préparer|✅ Valider / ✏️ Modifier / ❌ Annuler
- Mise à jour temps réel via WebSocket (Socket.io)
- Statistiques : total validé / modifié / annulé
- CRUD complet : catalogues, cocktails, photos

Vue Supervision
- Ecran dédié pour afficher les commandes prêtes
- Son de notification (mélodie ~2-3 sec) à chaque commande ready
- Refresh temps réel

Stack technique
| Composant | Technologie |
|---|---|
| Frontend | React + Vite |
| Backend | Node.js + Fastify |
| Base de données | PostgreSQL |
| Temps réel | Socket.io (WebSocket) |
| Reverse proxy | Nginx (host) + Certbot |
| Conteneurisation | Docker Compose |
| Hébergement | OVH (entyscoco) |
Workflow complet
L'invité arrive sur la tablette → choisit son cocktail → entre son prénom → valide. La commande arrive instantanément dans ma file admin. Je prépare, je marque "prêt", la supervision affiche la commande avec un son. L'invité vient chercher son verre.

Déploiement
Tout tourne dans un docker-compose.yml unique sur entyscoco. Nginx en hôte fait office de reverse proxy vers le port 3080. Certbot gère le certificat SSL pour bar.entyscoco.ovh.
# Lancer le projet
docker compose up -d --build
# Backup BDD
docker compose exec postgres \
pg_dump -U bar_user bar_db > backup.sql
Ce que j'ai appris
- Intégration Socket.io pour du temps réel full-stack
- Gestion des rôles (commande / admin / supervision) avec JWT sur Fastify
- Upload et serving d'images dans un volume Docker
- Débogage WebSocket (les images qui disparaissaient lors des updates temps réel — résolu en reconstruisant l'URL côté client après chaque event)
Projet personnel - déployé sur bar.entyscoco.ovh
