boot method

  1. @override
Future<void> boot(
  1. ContainerInterface container
)
override

Boot logic for core services such as loading .env and logging startup.

Implementation

@override
Future<void> boot(ContainerInterface container) async {
  final envSystem = container.resolve<EnvInterface>();
  envSystem.loadFromFile('.env');

  final config = container.resolve<ConfigInterface>() as ConfigSystem;
  config.setEnvironment(envSystem.getOrDefault('APP_ENV', 'development'));

  // Configure exception handling verbosity based on environment.
  final isDebug = envSystem.getBool(
    'APP_DEBUG',
    defaultValue: Khadem.isDevelopment, // Default to true in development mode
  );
  final exceptionHandler =
      container.resolve<ExceptionHandlerContract>() as ExceptionHandler;
  exceptionHandler.configure(
    showDetailedErrors: isDebug,
    includeStackTracesInResponse: isDebug,
  );

  // Load storage manager
  final storageManager = container.resolve<StorageManager>();
  storageManager.fromConfig(config.section('storage') ?? {});

  Lang.use(container.resolve<LangProvider>());
  Lang.setGlobalLocale(envSystem.getOrDefault('APP_LOCALE', 'en'));

  final logger = container.resolve<Logger>();
  logger.loadFromConfig(config);
  tz.initializeTimeZones();
  logger.info('✅ Core services initialized');
}