Lancer le restaurant en local
Lancez votre pack sur votre ordinateur, avec Docker.
Pour le pack Full Stack
Avant de commencer : installez et ouvrez Docker Desktop, ou Docker Engine avec Compose.
Voir la configuration requiseTéléchargez votre template
Ouvrez Mes templates et téléchargez le ZIP correspondant à votre pack.
Résultat attendu: Un fichier nommé comme
food-studio-full-stack-main-….zipse trouve dans vos téléchargements.Décompressez et ouvrez le dossier
Extrayez le ZIP et ouvrez un terminal dans le dossier
food-studio-full-stack. Sous Windows, extrayez-le dans l'Explorateur de fichiers, puis ouvrez un terminal dans le dossier.Terminalunzip food-studio-full-stack-*.zip cd food-studio-full-stackRésultat attendu: Le dossier contient
Un problème ?admin-dashboard,back-end,storefrontetdocker-compose.yml.Démarrez les applications
Construisez et démarrez l'API, le site de commande et le tableau de bord du personnel. Rien n'est à configurer au préalable. Le premier démarrage construit trois images et remplit la base de données avec le restaurant de démonstration, ce qui prend quelques minutes ; les démarrages suivants ne prennent que quelques secondes.
Terminaldansfood-studio-full-stackdocker compose up --buildUn port est déjà utilisé ?
Si le démarrage s'arrête avec
Un port est déjà utiliséaddress already in useouport is already allocated, un autre programme utilise 3030, 3031 ou 8000. Arrêtez-le, ou créez un fichier nommé.envdans le dossierfood-studio-full-stack, à côté dedocker-compose.yml, avec le port dont vous avez besoin, par exempleADMIN_PORT=3041(SITE_PORTpour le site,API_PORTpour l'API). Relancezdocker compose up --buildet ouvrez l'application sur son nouveau port.Résultat attendu: Les trois services restent actifs et le journal cesse de défiler. Laissez ce terminal ouvert.
Un problème ?Ouvrez le site de commande
Ouvrez localhost:3030Local. Pour vous connecter en tant que client de démonstration, utilisez
sam@foodstudio.exampleavec le mot de passeFoodDemo2026!. L'arabe se trouve sous/ar.Résultat attendu: Le site s'ouvre sur sa page d'accueil avec le menu de démonstration et ses photos.
Un problème ?Connectez-vous au tableau de bord du personnel
Ouvrez localhost:3031Local. Connectez-vous avec
owner@foodstudio.exampleet le mot de passeFoodDemo2026!. Pour le gérant ou la cuisine, saisissezmanager@foodstudio.exampleoukitchen@foodstudio.exampleavec le même mot de passe. Changez ces mots de passe avant que le restaurant soit accessible depuis Internet.Résultat attendu: Le tableau de bord s'ouvre sur sa vue d'ensemble, avec les commandes du jour et la file d'attente de la cuisine.
Un problème ?
Faites le tour
Voici à quoi ressemble le restaurant de démonstration une fois que tout tourne.

| Compte | Se connecte sur | Mot de passe | |
|---|---|---|---|
| Propriétaire : tout, y compris l'équipe et les rôles | Tableau de bord du personnel | owner@foodstudio.example | FoodDemo2026! |
| Gérant : tout sauf l'équipe et les rôles | Tableau de bord du personnel | manager@foodstudio.example | FoodDemo2026! |
| Cuisine : les commandes de la cuisine Central, sans les prix | Tableau de bord du personnel | kitchen@foodstudio.example | FoodDemo2026! |
| Client, avec des points de fidélité issus de commandes passées | Site de commande | sam@foodstudio.example | FoodDemo2026! |
Les données de démonstration ajoutent aussi deux autres gérants (rami.manager@foodstudio.example et nina.manager@foodstudio.example) et un compte cuisine pour chacune des trois autres cuisines (riverside.kitchen@, uptown.kitchen@ et harbor.kitchen@, tous en foodstudio.example), avec le même mot de passe. Ce sont uniquement des comptes de démonstration en local.
Arrêter et redémarrer
Appuyez sur Ctrl+C dans le terminal pour arrêter les applications, ou exécutez cette commande depuis le dossier food-studio-full-stack. Vos données, la base de données et les fichiers envoyés, sont conservées dans le volume food-studio-data.
food-studio-full-stackdocker compose downRedémarrez avec la même commande qu'à l'étape 3. Sans --build, elle réutilise les images déjà construites.
food-studio-full-stackdocker compose upConserver vos données
docker compose down -v supprime aussi le volume de données. Le démarrage suivant recrée une copie neuve du restaurant de démonstration, et tout ce que vous avez créé est perdu.
Lancer le site de commande
Ce pack est le site de commande seul. Il lit tout depuis l'API du template, démarrez donc l'API en premier. Sauf si vous le construisez avec une autre adresse, le site attend l'API sur http://localhost:8000. L'API est un pack séparé et ne fait pas partie de ce téléchargement.
Décompressez et ouvrez le dossier
Terminalunzip food-studio-website-*.zip cd food-studio-websiteRésultat attendu: Le dossier contient un
Un problème ?Dockerfileet unpackage.json.Construisez l'image
Les valeurs
NEXT_PUBLIC_*sont compilées dans le JavaScript que charge le navigateur, ce sont donc des arguments de build. Sans aucun argument, le site utilise l'API surhttp://localhost:8000/api. Pour une API ailleurs, passez son adresse.Terminaldansfood-studio-websitedocker build -t foodstudio-site .Avec votre propre API :
Un problème ?Terminaldansfood-studio-websitedocker build -t foodstudio-site --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com/api --build-arg NEXT_PUBLIC_MEDIA_HOSTNAME=media.your-domain.com .Démarrez l'application
Si le port
3030est pris, changez le nombre à gauche de-p, par exemple-p 3041:3030, ouvrez ce port à la place et ajoutez la nouvelle adresse auCORS_ORIGINde l'API.Terminaldansfood-studio-websitedocker run -p 3030:3030 foodstudio-siteRésultat attendu: localhost:3030Local ouvre le site avec le menu de votre API. L'anglais se trouve sous
Un problème ?/en, l'arabe sous/ar.
Lancer le tableau de bord du personnel
Ce pack est le tableau de bord du personnel seul. Chaque écran lit l'API du template, démarrez donc l'API en premier. Sauf si vous le construisez avec une autre adresse, le tableau de bord attend l'API sur http://localhost:8000. L'API est un pack séparé et ne fait pas partie de ce téléchargement.
Téléchargez votre template
Ouvrez Mes templates et téléchargez le ZIP Tableau de bord du personnel.
Décompressez et ouvrez le dossier
Terminalunzip food-studio-staff-dashboard-*.zip cd food-studio-staff-dashboardRésultat attendu: Le dossier contient un
Un problème ?Dockerfileet unpackage.json.Construisez l'image
Sans arguments de build, le tableau de bord utilise l'API sur
http://localhost:8000/api. Pour une API ailleurs, passez son adresse, son adresse sans/apipour les notifications en direct, et l'adresse du site pour le lien « View storefront ».Terminaldansfood-studio-staff-dashboarddocker build -t foodstudio-admin .Avec votre propre API :
Un problème ?Terminaldansfood-studio-staff-dashboarddocker build -t foodstudio-admin --build-arg NEXT_PUBLIC_API_BASE_URL=https://api.your-domain.com/api --build-arg NEXT_PUBLIC_WEBSOCKET_BASE_URL=https://api.your-domain.com --build-arg NEXT_PUBLIC_STOREFRONT_URL=https://your-domain.com .Démarrez-le et connectez-vous
Si le port
3031est pris, changez le nombre à gauche de-p, par exemple-p 3041:3031, ouvrez ce port à la place et ajoutez la nouvelle adresse auCORS_ORIGINde l'API.Terminaldansfood-studio-staff-dashboarddocker run -p 3031:3031 foodstudio-adminRésultat attendu: localhost:3031Local ouvre le formulaire de connexion. Connectez-vous avec le compte propriétaire
Un problème ?owner@foodstudio.exampleet le mot de passeFoodDemo2026!, qu'une API avec les données de démonstration accepte.
Lancer l'API
Ce pack est l'API NestJS seule, sur un fichier SQLite conservé dans un volume Docker avec les fichiers envoyés. Le site de commande et le tableau de bord du personnel sont des packs séparés et ne font pas partie de ce téléchargement.
Décompressez et ouvrez le dossier
Terminalunzip food-studio-backend-*.zip cd food-studio-backendRésultat attendu: Le dossier contient un
Un problème ?Dockerfile, unpackage.jsonet un.env.example.Démarrez-la avec le restaurant de démonstration
Un nouveau volume reçoit des tables vides et aucun compte, sauf si vous demandez le restaurant de démonstration : gardez donc
-e SEED_DEMO_DATA=truepour un premier démarrage. Le volume conserve la base de données et les fichiers envoyés d'une exécution à l'autre. Si le port8000est pris, changez le nombre à gauche de-p, par exemple-p 8010:8000, et ajoutez-e PUBLIC_MEDIA_URL=http://localhost:8010/mediapour que les adresses des images l'utilisent aussi. Vos frontends doivent alors pointer vershttp://localhost:8010/api.Terminaldansfood-studio-backenddocker run -p 8000:8000 -v foodstudio-data:/data -e SEED_DEMO_DATA=true foodstudio-apiRésultat attendu: localhost:8000/api/healthLocal répond
Un problème ?{"success":true,"data":{"status":"ok","database":"up"},"message":""}.
Le conteneur accepte le site sur http://localhost:3030 et le tableau de bord sur http://localhost:3031. Pour d'autres adresses, définissez CORS_ORIGIN, FRONTEND_URL et STOREFRONT_URL avec -e.
Pour donner vos propres clés au conteneur (paiements, e-mail, R2, IA), créez .env à partir de .env.example avec cp .env.example .env, remplissez-le et ajoutez --env-file .env à docker run. Sans JWT_SECRET personnel, ou avec celui de l'exemple, le conteneur génère un secret et le conserve dans le volume.
L'image n'inclut pas le modèle de suppression d'arrière-plan, sauf si vous le demandez. Pour l'inclure, construisez avec :
food-studio-backenddocker build --build-arg FETCH_BG_MODEL=true -t foodstudio-api .