Getting Started

कॉन्फ़िगरेशन

परिचय

Nylo Website v7 एक सुरक्षित एनवायरनमेंट कॉन्फ़िगरेशन सिस्टम का उपयोग करता है। आपके एनवायरनमेंट वेरिएबल्स एक .env फ़ाइल में संग्रहीत होते हैं और फिर आपके ऐप में उपयोग के लिए एक जेनरेटेड Dart फ़ाइल (env.g.dart) में एन्क्रिप्ट किए जाते हैं।

यह दृष्टिकोण प्रदान करता है:

  • सुरक्षा: एनवायरनमेंट वैल्यूज़ कम्पाइल्ड ऐप में XOR-एन्क्रिप्टेड होती हैं
  • टाइप सेफ्टी: वैल्यूज़ स्वचालित रूप से उपयुक्त टाइप्स में पार्स होती हैं
  • बिल्ड-टाइम लचीलापन: डेवलपमेंट, स्टेजिंग और प्रोडक्शन के लिए अलग-अलग कॉन्फ़िगरेशन

.env फ़ाइल

आपके प्रोजेक्ट रूट पर .env फ़ाइल में आपके कॉन्फ़िगरेशन वेरिएबल्स होते हैं:

# 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"

उपलब्ध वेरिएबल्स

वेरिएबल विवरण
APP_KEY आवश्यक। एन्क्रिप्शन के लिए 32-कैरेक्टर सीक्रेट की
APP_NAME आपके एप्लिकेशन का नाम
APP_ENV एनवायरनमेंट: developing या production
APP_DEBUG डिबग मोड सक्षम करें (true/false)
APP_URL आपके ऐप का URL
API_BASE_URL API अनुरोधों के लिए बेस URL
ASSET_PATH एसेट्स फ़ोल्डर का पाथ
DEFAULT_LOCALE डिफ़ॉल्ट भाषा कोड

एनवायरनमेंट कॉन्फ़िग जेनरेट करना

Nylo Website v7 के लिए आपको अपने ऐप के env वैल्यूज़ तक पहुँचने से पहले एक एन्क्रिप्टेड एनवायरनमेंट फ़ाइल जेनरेट करनी होगी।

चरण 1: APP_KEY जेनरेट करें

सबसे पहले, एक सुरक्षित APP_KEY जेनरेट करें:

metro make:key

यह आपकी .env फ़ाइल में एक 32-कैरेक्टर APP_KEY जोड़ता है।

चरण 2: env.g.dart जेनरेट करें

एन्क्रिप्टेड एनवायरनमेंट फ़ाइल जेनरेट करें:

metro make:env

यह आपके एन्क्रिप्टेड एनवायरनमेंट वेरिएबल्स के साथ lib/bootstrap/env.g.dart बनाता है।

जब आपका ऐप शुरू होता है तब आपका env स्वचालित रूप से पंजीकृत हो जाता है — main.dart में Nylo.init(env: Env.get, ...) यह आपके लिए हैंडल करता है। कोई अतिरिक्त सेटअप की आवश्यकता नहीं है।

बदलावों के बाद पुनः जेनरेट करना

जब आप अपनी .env फ़ाइल को संशोधित करें, तो कॉन्फ़िग को पुनः जेनरेट करें:

metro make:env --force

--force फ्लैग मौजूदा env.g.dart को ओवरराइट करता है।

वैल्यूज़ प्राप्त करना

एनवायरनमेंट वैल्यूज़ तक पहुँचने का अनुशंसित तरीका config क्लासेज़ के माध्यम से है। आपकी lib/config/app.dart फ़ाइल env वैल्यूज़ को टाइप्ड स्टैटिक फ़ील्ड्स के रूप में एक्सपोज़ करने के लिए getEnv() का उपयोग करती है:

// 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');
}

फिर अपने ऐप कोड में, config क्लास के माध्यम से वैल्यूज़ एक्सेस करें:

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

यह पैटर्न env एक्सेस को आपकी config क्लासेज़ में केंद्रीकृत रखता है। getEnv() हेल्पर का उपयोग सीधे ऐप कोड में करने के बजाय config क्लासेज़ के अंदर किया जाना चाहिए।

कॉन्फ़िग क्लासेज़ बनाना

आप Metro का उपयोग करके थर्ड-पार्टी सेवाओं या फ़ीचर-विशिष्ट कॉन्फ़िगरेशन के लिए कस्टम config क्लासेज़ बना सकते हैं:

metro make:config RevenueCat

यह lib/config/revenue_cat_config.dart पर एक नई config फ़ाइल बनाता है:

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

उदाहरण: RevenueCat कॉन्फ़िगरेशन

चरण 1: अपनी .env फ़ाइल में एनवायरनमेंट वेरिएबल्स जोड़ें:

REVENUECAT_API_KEY="appl_xxxxxxxxxxxxx"
REVENUECAT_ENTITLEMENT_ID="premium"

चरण 2: इन वैल्यूज़ को रेफ़रेंस करने के लिए अपनी config क्लास अपडेट करें:

// 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');
}

चरण 3: अपनी एनवायरनमेंट कॉन्फ़िग पुनः जेनरेट करें:

metro make:env --force

चरण 4: अपने ऐप में config क्लास का उपयोग करें:

import '/config/revenue_cat_config.dart';

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

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

यह दृष्टिकोण आपकी API कीज़ और कॉन्फ़िगरेशन वैल्यूज़ को सुरक्षित और केंद्रीकृत रखता है, जिससे विभिन्न एनवायरनमेंट्स में अलग-अलग वैल्यूज़ प्रबंधित करना आसान हो जाता है।

वेरिएबल टाइप्स

आपकी .env फ़ाइल में वैल्यूज़ स्वचालित रूप से पार्स होती हैं:

.env वैल्यू Dart टाइप उदाहरण
APP_NAME="My App" String "My App"
DEBUG=true bool true
DEBUG=false bool false
VALUE=null null null
EMPTY="" String "" (खाली स्ट्रिंग)

एनवायरनमेंट फ्लेवर्स

डेवलपमेंट, स्टेजिंग और प्रोडक्शन के लिए अलग-अलग कॉन्फ़िगरेशन बनाएँ।

चरण 1: एनवायरनमेंट फ़ाइलें बनाएँ

अलग-अलग .env फ़ाइलें बनाएँ:

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

.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"

चरण 2: एनवायरनमेंट कॉन्फ़िग जेनरेट करें

किसी विशिष्ट env फ़ाइल से जेनरेट करें:

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

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

चरण 3: अपना ऐप बिल्ड करें

उपयुक्त कॉन्फ़िगरेशन के साथ बिल्ड करें:

# Development
flutter run

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

बिल्ड-टाइम इंजेक्शन

बेहतर सुरक्षा के लिए, आप APP_KEY को सोर्स कोड में एम्बेड करने के बजाय बिल्ड टाइम पर इंजेक्ट कर सकते हैं।

--dart-define मोड के साथ जेनरेट करें

metro make:env --dart-define

यह APP_KEY को एम्बेड किए बिना env.g.dart जेनरेट करता है।

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

यह दृष्टिकोण APP_KEY को आपके सोर्स कोड से बाहर रखता है, जो इनके लिए उपयोगी है:

  • CI/CD पाइपलाइन जहाँ सीक्रेट्स इंजेक्ट किए जाते हैं
  • ओपन सोर्स प्रोजेक्ट्स
  • बेहतर सुरक्षा आवश्यकताएँ

सर्वोत्तम प्रथाएँ

  1. कभी भी .env को वर्शन कंट्रोल में कमिट न करें - इसे .gitignore में जोड़ें
  2. .env-example का उपयोग करें - संवेदनशील वैल्यूज़ के बिना एक टेम्पलेट कमिट करें
  3. बदलावों के बाद पुनः जेनरेट करें - .env को संशोधित करने के बाद हमेशा metro make:env --force चलाएँ
  4. प्रति एनवायरनमेंट अलग कीज़ - डेवलपमेंट, स्टेजिंग और प्रोडक्शन के लिए यूनिक APP_KEY उपयोग करें