Aller à l'article
Aniq-UI

E-CommerceVariables d'environnement

Variables d'environnement

Le rôle de chaque paramètre des fichiers .env de l'API et des frontends, et ceux dont vous avez besoin.

Pour le pack Full Stack

Où se trouvent les paramètres

FichierLu parContient des secrets
back-end/.envL'API, avec yarn dev et dans Docker ComposeOui. Ne le versionnez jamais.
storefront/.envLa boutique, au moment du buildNon. Toutes les valeurs sont publiques.
admin-dashboard/.envLe tableau de bord admin, au moment du buildNon. Toutes les valeurs sont publiques.
.env à côté de docker-compose.ymlDocker Compose, pour le pack Full StackNon

Créez chaque fichier à partir du .env.example placé à côté, qui documente chaque variable : cp .env.example .env. Les exemples fonctionnent tels quels pour une exécution locale.

Où se trouvent les paramètres

Un seul fichier, storefront/.env, lu au moment du build de la boutique. Toutes ses valeurs sont publiques : il ne contient donc jamais de secret. Omettez-le pour fonctionner sur la boutique d'exemple ; créez-le à partir de .env.example quand vous connectez une API : cp .env.example .env.

Où se trouvent les paramètres

Un seul fichier, admin-dashboard/.env, lu au moment du build du tableau de bord. Toutes ses valeurs sont publiques : il ne contient donc jamais de secret. Omettez-le pour fonctionner sur la boutique d'exemple ; créez-le à partir de .env.example quand vous connectez une API : cp .env.example .env.

Où se trouvent les paramètres

Un seul fichier, back-end/.env, lu par l'API avec yarn dev, et par un conteneur quand vous le lui passez avec --env-file .env. Il contient des secrets : ne le committez jamais. Créez-le à partir de .env.example, qui documente chaque variable et fonctionne tel quel pour une exécution en local : cp .env.example .env.

Paramètres essentiels de l'API

L'API vérifie JWT_SECRET et CORS_ORIGIN avant de démarrer. Si l'une manque ou est inutilisable, elle s'arrête avec une ligne indiquant ce qu'il faut corriger.

VariableRôle
NODE_ENVdevelopment en local, qui crée et met à jour les tables au démarrage. production sur un serveur en ligne, qui ne touche jamais aux tables.
PORTLe port de l'API, 8000. Les deux frontends pointent vers lui.
DB_TYPEsqlite (par défaut) ou mysql.
SQLITE_DATABASEChemin du fichier SQLite, ./database.sqlite par défaut.
JWT_SECRETSigne chaque connexion. Obligatoire. La valeur d'exemple n'est acceptée qu'en développement.
JWT_EXPIRATIONDurée d'une connexion, 7d par défaut.
CORS_ORIGINLes adresses de la boutique et du tableau de bord admin, séparées par une virgule. Non définie, elle revient aux deux ports locaux ; obligatoire en production.
FRONTEND_URLL'adresse du tableau de bord admin, depuis laquelle ses notifications en direct se connectent. Obligatoire en production pour ces notifications.
TRUST_PROXYOptionnel. Jusqu'où l'API fait confiance à X-Forwarded-For pour compter les tentatives de connexion par visiteur. Non définie, elle ne le lit que depuis un proxy sur une adresse privée ; false, jamais ; un nombre fait confiance à exactement ce nombre de proxies.
RESEED_REVIEWSOptionnel. 1 fait réécrire par yarn seed les avis de démonstration.

Générez votre propre JWT_SECRET avec :

Terminal
node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"

Tout identifiant ci-dessous qui garde exactement sa valeur de .env.example compte comme non défini : la fonctionnalité correspondante s'affiche alors comme désactivée au lieu d'échouer à son premier appel.

Utiliser MySQL au lieu de SQLite

Créez une base de données vide, puis définissez le pilote et la connexion dans back-end/.env :

back-end/.env
DB_TYPE=mysql
DB_HOST=your-mysql-host
DB_PORT=3306
DB_USERNAME=your-mysql-username
DB_PASSWORD=your-mysql-password
DB_DATABASE=your-database-name

Puis exécutez yarn seed pour la boutique de démonstration, ou yarn db:sync pour les tables sans données. L'API en fonctionnement ne crée et ne met à jour elle-même les tables qu'avec NODE_ENV=development : avec NODE_ENV=production, l'une de ces commandes doit donc tourner avant le premier démarrage (yarn db:sync:prod ou yarn seed:prod après yarn build).

Boutique et tableau de bord admin

Chaque valeur NEXT_PUBLIC_* est compilée dans le JavaScript chargé par le navigateur, et toute personne qui ouvre la page peut la lire. Ne mettez jamais de secret dans ces fichiers, et reconstruisez après en avoir modifié un.

VariableApplicationRôle
NEXT_PUBLIC_API_BASE_URLLes deuxL'adresse de l'API, /api compris, par exemple http://localhost:8000/api. C'est en la définissant que vous désactivez la boutique d'exemple ; vide ou absente, l'application fonctionne sur sa boutique d'exemple.
NEXT_PUBLIC_MEDIA_HOSTNAMELes deuxL'hôte public de votre bucket de médias, celui de R2_PUBLIC_URL, sans https:// ni barre oblique finale. Laissez-le vide tant que vous n'avez pas de bucket.
NEXT_PUBLIC_SITE_URLBoutiqueL'adresse publique de la boutique, utilisée pour les liens canonical et hreflang, les cartes de partage, les données structurées, robots.txt et sitemap.xml. Réglez-la sur votre vrai domaine avant la mise en ligne.
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEYBoutiqueUne vraie clé pk_test_… ou pk_live_…. Vide, ou avec une valeur qui n'est pas une vraie clé, l'option carte du paiement est désactivée et les clients sont invités à choisir le paiement à la livraison.
NEXT_PUBLIC_DEMO_CHECKOUTBoutiquetrue préremplit le paiement avec un acheteur généré, pour les démos. Laissez false pour une vraie boutique.
API_INTERNAL_URLLes deuxOptionnel, côté serveur uniquement. L'adresse à laquelle le serveur de l'application joint l'API lorsqu'elle diffère de celle du navigateur, comme dans Docker Compose. Laissez-la vide ailleurs.
NEXT_PUBLIC_WEBSOCKET_BASE_URLAdminL'adresse de l'API sans /api, pour les notifications en direct et les mises à jour de permissions. Optionnel : vide, elle est déduite de NEXT_PUBLIC_API_BASE_URL.
NEXT_PUBLIC_STOREFRONT_URLAdminLa destination du lien « Go to storefront » dans la barre de navigation du tableau de bord.
BUILD_STANDALONELes deuxtrue fait produire à yarn build un serveur autonome, ce que les Dockerfiles définissent. Sinon, laissez-la non définie.

Les balises marketing de la boutique sont aussi des valeurs NEXT_PUBLIC_*.

Options de Docker Compose

Rien n'est à définir pour une exécution en local. Pour changer quelque chose, placez-le dans un fichier .env à côté de docker-compose.yml et relancez docker compose up --build : les frontends intègrent ces valeurs à la compilation.

VariableRôle
SITE_PORT, ADMIN_PORT, API_PORTLes ports de votre ordinateur : 3030, 3031 et 8000 par défaut. Définissez-en un quand un autre programme utilise déjà ce port, par exemple ADMIN_PORT=3041. Les adresses ci-dessous, CORS_ORIGIN et FRONTEND_URL les suivent.
SITE_URL, ADMIN_URL, API_URLL'adresse à laquelle le navigateur joint chaque application. Définissez les trois quand vous servez la stack sur vos propres domaines ; CORS_ORIGIN et FRONTEND_URL de l'API en sont déduits.
MEDIA_HOSTNAMEL'hôte public de votre bucket, avec les variables R2_* dans back-end/.env.
SEED_DEMO_DATAfalse démarre avec des tables vides au lieu de la boutique de démonstration.
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEYLe formulaire de carte de la boutique.
NEXT_PUBLIC_GTM_ID, NEXT_PUBLIC_GA4_MEASUREMENT_ID, NEXT_PUBLIC_META_PIXEL_ID, NEXT_PUBLIC_TIKTOK_PIXEL_ID, NEXT_PUBLIC_SNAPCHAT_PIXEL_ID, NEXT_PUBLIC_PINTEREST_TAG_ID, NEXT_PUBLIC_ANALYTICS_CURRENCYLes balises marketing de la boutique, toutes optionnelles.

Le conteneur de l'API lit aussi back-end/.env lorsqu'il existe : les clés de paiement, de médias et d'IA se définissent donc à un seul endroit, pour yarn dev comme pour Docker. Le fichier compose l'emporte pour les quelques valeurs qui diffèrent dans un conteneur : le chemin de la base de données, le port, NODE_ENV=production, CORS_ORIGIN et FRONTEND_URL. Les données vivent dans le volume ecommerce-data.

Stockage des médias

Les photos de produits, les images de catégories, les avatars, les pièces jointes de conversation, les résultats du studio IA et les photos de la cabine d'essayage sont envoyés dans un bucket Cloudflare R2, ou n'importe quel bucket compatible S3. Définissez les cinq variables dans back-end/.env et donnez aux deux frontends l'hôte public du bucket via NEXT_PUBLIC_MEDIA_HOSTNAME (avec Docker Compose, MEDIA_HOSTNAME).

back-end/.env
R2_ACCESS_KEY_ID=
R2_SECRET_ACCESS_KEY=
R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
R2_BUCKET_NAME=
R2_PUBLIC_URL=https://your-public-url.r2.dev

Sans bucket, yarn seed enregistre chaque image de produit et de catégorie sous forme de chemin /mock-media/…, et les deux frontends livrent ces 35 fichiers dans public/mock-media/ : le catalogue s'affiche donc sans aucun envoi. Seul l'envoi de nouvelles images cesse de fonctionner : il répond 503 tant que le bucket n'est pas configuré.

Avec un bucket, le seed y envoie les images de son catalogue. Gardez public/mock-media/ dans les deux frontends tant qu'un produit pointe encore dessus.

Paiements par carte

Les paiements par carte passent par Stripe : STRIPE_SECRET_KEY et STRIPE_WEBHOOK_SECRET dans back-end/.env, et NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY pour la boutique. Sans elles, aucun paiement par carte n'est encaissé, et le paiement à la livraison fonctionne normalement.

back-end/.env
STRIPE_SECRET_KEY=sk_test_your-stripe-secret-key
STRIPE_WEBHOOK_SECRET=whsec_your-webhook-secret

E-mail

Le template ne fournit aucun transport d'e-mails : aucun message n'est donc jamais envoyé par e-mail. Hors production, le jeton de réinitialisation du mot de passe d'un client est écrit dans le journal de l'API à la place ; avec NODE_ENV=production, il n'est envoyé nulle part. Connectez votre propre service d'e-mails avant la mise en ligne : le point d'accroche est forgotPassword dans back-end/src/modules/customer-auth/customer-auth.controller.ts.

Fonctionnalités IA

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Activer les fonctionnalités IA : les clés des fournisseurs, les modèles utilisés par chaque fonctionnalité et ce que chacune coûte.

La boutique d'exemple des frontends

Les deux frontends fonctionnent sans API. Démarré ou construit sans NEXT_PUBLIC_API_BASE_URL, chacun répond à chaque requête à partir d'une boutique d'exemple dans le navigateur et affiche une mention « Sample data ». C'est en définissant l'adresse que vous la désactivez.

  • N'importe quel e-mail et mot de passe vous connectent en tant que client d'exemple sur la boutique. Dans le tableau de bord, n'importe quel e-mail valide avec un mot de passe d'au moins 6 caractères vous connecte en tant que Super Admin.
  • Les écritures sont réelles et conservées dans le stockage du navigateur : elles survivent donc à un rechargement. Pour repartir de zéro, exécutez localStorage.removeItem("mock_db_v1"); location.reload(); dans la console du navigateur.
  • Le paiement sur la boutique aboutit sans appeler Stripe.
  • Dans le tableau de bord, l'assistant IA et le studio IA restent indisponibles, car tous deux ont besoin des clés de l'API.
  • Une fois votre API en ligne, yarn remove:mock dans l'une ou l'autre application supprime la boutique d'exemple et sa mention. La commande laisse public/mock-media/ en place, car un backend rempli sans bucket y fait pointer ses images.

Comment fonctionne la boutique d'exemple

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Comment les requêtes sont dirigées vers la boutique d'exemple, et comment la modifier ou l'étendre.

Mode démo

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Faire tourner une démo publique : l'interrupteur de démo, les comptes par visiteur et ce que les visiteurs peuvent modifier.

Mise en ligne

Avant de déployer quelque part en public :

  1. Définissez NODE_ENV=production et un JWT_SECRET long et aléatoire qui vous est propre dans back-end/.env.
  2. Réglez CORS_ORIGIN sur les adresses de votre boutique et de votre tableau de bord admin, séparées par une virgule, et FRONTEND_URL sur l'adresse du tableau de bord admin.
  3. Sur une base de données vide, exécutez yarn build, puis yarn db:sync:prod une fois (ou yarn seed:prod pour la boutique de démonstration), puis yarn start:prod.
  4. Faites pointer le health check de votre hébergeur vers /api/health.
  5. Construisez chaque frontend avec NEXT_PUBLIC_API_BASE_URL pointant vers votre API déployée et le NEXT_PUBLIC_SITE_URL de la boutique sur sa propre adresse.
  6. Changez le mot de passe du Super Admin, ou partez de tables vides.

Pas pour une boutique avec de vraies commandes

yarn railway:setup construit, télécharge le modèle de suppression d'arrière-plan, supprime toutes les tables et remplit la base, à chaque exécution. La commande convient à un déploiement de démo, jamais à la commande de build d'une vraie boutique.

Bloqué sur une étape ?

Trouvez une solution avant de tout recommencer.

Dépannage

Préférences des Cookies

Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser le trafic du site et personnaliser le contenu. En cliquant sur "Accepter Tout", vous consentez à notre utilisation des cookies pour l'analyse et la publicité personnalisée.