Оглавление
Config необходим для того, чтобы во всем приложении были доступны параметры конфигурации приложения.
Config должен быть доступен во всем приложении
В Config могут находится различные переменные:
Config должен находится в общедоступном Shared слое.

Рекомендуется спрятать взаимодействие с Config за абстракцию:
export type Config = {
apiUrl: string;
};
export class ConfigService {
#config: Config | undefined;
constructor() {
this.config = {} as Config;
}
init(config: Config) {
this.config = config as Config;
}
get config(): Config {
if (!this.#config) {
throw Error('ConfigService is not initialized');
}
return this.#config;
}
set config(config: Config) {
this.#config = config;
}
}
export const configService = new ConfigService();
Инициализация ConfigService должна происходит в Application слое. Application слой достанет из env данные и передаст их в ConfigService:
configService.init({
apiUrl: process.env.NEXT_PUBLIC_API_URL,
});