Getting Started

Configuration

Introduction

Nylo Website v7 utilise un systeme de configuration d'environnement securise. Vos variables d'environnement sont stockees dans un fichier .env puis chiffrees dans un fichier Dart genere (env.g.dart) pour utilisation dans votre application.

Cette approche offre :

  • Securite : Les valeurs d'environnement sont chiffrees par XOR dans l'application compilee
  • Typage fort : Les valeurs sont automatiquement analysees vers les types appropries
  • Flexibilite a la compilation : Differentes configurations pour le developpement, la pre-production et la production

Le fichier .env

Le fichier .env a la racine de votre projet contient vos variables de configuration :

# Environment configuration
APP_KEY=your-32-character-secret-key
APP_NAME="My App"
APP_ENV="developing"
APP_DEBUG=true
APP_URL="https://myapp.com"
API_BASE_URL="https://api.myapp.com"

ASSET_PATH="assets"

DEFAULT_LOCALE="en"

Variables disponibles

Variable Description
APP_KEY Requis. Cle secrete de 32 caracteres pour le chiffrement
APP_NAME Le nom de votre application
APP_ENV Environnement : developing ou production
APP_DEBUG Activer le mode debogage (true/false)
APP_URL L'URL de votre application
API_BASE_URL URL de base pour les requetes API
ASSET_PATH Chemin vers le dossier des assets
DEFAULT_LOCALE Code de langue par defaut

Generer la configuration d'environnement

Nylo Website v7 necessite de generer un fichier d'environnement chiffre avant que votre application puisse acceder aux valeurs d'environnement.

Etape 1 : Generer un APP_KEY

Generez d'abord un APP_KEY securise :

metro make:key

Cela ajoute un APP_KEY de 32 caracteres a votre fichier .env.

Etape 2 : Generer env.g.dart

Generez le fichier d'environnement chiffre :

metro make:env

Cela cree lib/bootstrap/env.g.dart avec vos variables d'environnement chiffrees.

Votre environnement est automatiquement enregistre au demarrage de votre application — Nylo.init(env: Env.get, ...) dans main.dart s'en charge pour vous. Aucune configuration supplementaire n'est necessaire.

Regenerer apres des modifications

Lorsque vous modifiez votre fichier .env, regenerez la configuration :

metro make:env --force

Le drapeau --force ecrase le fichier env.g.dart existant.

Recuperer les valeurs

La methode recommandee pour acceder aux valeurs d'environnement est via les classes de configuration. Votre fichier lib/config/app.dart utilise getEnv() pour exposer les valeurs d'environnement sous forme de champs statiques types :

// lib/config/app.dart
final class AppConfig {
  static final String appName = getEnv('APP_NAME', defaultValue: 'Nylo');
  static final String appEnv = getEnv('APP_ENV', defaultValue: 'developing');
  static final bool appDebug = getEnv('APP_DEBUG', defaultValue: false);
  static final String apiBaseUrl = getEnv('API_BASE_URL');
}

Ensuite, dans le code de votre application, accedez aux valeurs via la classe de configuration :

// Anywhere in your app
String name = AppConfig.appName;
bool isDebug = AppConfig.appDebug;
String apiUrl = AppConfig.apiBaseUrl;

Ce modele centralise l'acces aux variables d'environnement dans vos classes de configuration. Le helper getEnv() doit etre utilise dans les classes de configuration plutot que directement dans le code de l'application.

Creer des classes de configuration

Vous pouvez creer des classes de configuration personnalisees pour des services tiers ou une configuration specifique a une fonctionnalite en utilisant Metro :

metro make:config RevenueCat

Cela cree un nouveau fichier de configuration a lib/config/revenue_cat_config.dart :

final class RevenueCatConfig {
  // Add your config values here
}

Exemple : Configuration RevenueCat

Etape 1 : Ajoutez les variables d'environnement a votre fichier .env :

REVENUECAT_API_KEY="appl_xxxxxxxxxxxxx"
REVENUECAT_ENTITLEMENT_ID="premium"

Etape 2 : Mettez a jour votre classe de configuration pour referencer ces valeurs :

// lib/config/revenue_cat_config.dart
import 'package:nylo_framework/nylo_framework.dart';

final class RevenueCatConfig {
  static final String apiKey = getEnv('REVENUECAT_API_KEY');
  static final String entitlementId = getEnv('REVENUECAT_ENTITLEMENT_ID', defaultValue: 'premium');
}

Etape 3 : Regenerez votre configuration d'environnement :

metro make:env --force

Etape 4 : Utilisez la classe de configuration dans votre application :

import '/config/revenue_cat_config.dart';

// Initialize RevenueCat
await Purchases.configure(
  PurchasesConfiguration(RevenueCatConfig.apiKey),
);

// Check entitlements
if (entitlement.identifier == RevenueCatConfig.entitlementId) {
  // Grant premium access
}

Cette approche garde vos cles API et valeurs de configuration securisees et centralisees, facilitant la gestion de valeurs differentes selon les environnements.

Types de variables

Les valeurs de votre fichier .env sont automatiquement analysees :

Valeur .env Type Dart Exemple
APP_NAME="My App" String "My App"
DEBUG=true bool true
DEBUG=false bool false
VALUE=null null null
EMPTY="" String "" (chaine vide)

Variantes d'environnement

Creez differentes configurations pour le developpement, la pre-production et la production.

Etape 1 : Creer les fichiers d'environnement

Creez des fichiers .env separes :

.env                  # Development (default)
.env.staging          # Staging
.env.production       # Production

Exemple .env.production :

APP_KEY=production-secret-key-here
APP_NAME="My App"
APP_ENV="production"
APP_DEBUG=false
APP_URL="https://myapp.com"
API_BASE_URL="https://api.myapp.com"

Etape 2 : Generer la configuration d'environnement

Generez a partir d'un fichier d'environnement specifique :

# For production
metro make:env --file=".env.production" --force

# For staging
metro make:env --file=".env.staging" --force

Etape 3 : Compiler votre application

Compilez avec la configuration appropriee :

# Development
flutter run

# Production build
metro make:env --file=.env.production --force
flutter build ios
flutter build appbundle

Injection au moment de la compilation

Pour une securite renforcee, vous pouvez injecter l'APP_KEY au moment de la compilation au lieu de l'integrer dans le code source.

Generer avec le mode --dart-define

metro make:env --dart-define

Cela genere env.g.dart sans integrer l'APP_KEY.

Compiler avec injection de l'APP_KEY

# iOS
flutter build ios --dart-define=APP_KEY=your-secret-key

# Android
flutter build appbundle --dart-define=APP_KEY=your-secret-key

# Run
flutter run --dart-define=APP_KEY=your-secret-key

Cette approche garde l'APP_KEY en dehors de votre code source, ce qui est utile pour :

  • Les pipelines CI/CD ou les secrets sont injectes
  • Les projets open source
  • Les exigences de securite renforcees

Bonnes pratiques

  1. Ne jamais committer .env dans le controle de version - Ajoutez-le au .gitignore
  2. Utiliser .env-example - Committez un modele sans valeurs sensibles
  3. Regenerer apres les modifications - Executez toujours metro make:env --force apres avoir modifie .env
  4. Des cles differentes par environnement - Utilisez des APP_KEYs uniques pour le developpement, la pre-production et la production