package main // fx.Module — модульный монолит с Fx. // // Каждый бизнес-домен живёт в своём файле: // infra.go — БД, кэш, шина событий (общая инфраструктура) // auth_module.go — авторизация: сессии + проверка токенов // user_module.go — профили пользователей // notification_module.go — уведомления // api.go — HTTP-хендлер и сервер // // Зачем это нужно: // Команда авторизации добавляет TokenValidator → правит ТОЛЬКО auth_module.go. // main.go не трогает. Конфликтов при мерже с командой уведомлений — ноль. // // Без fx.Module все провайдеры в одном main.go. Три команды правят один файл. // Мерж-конфликты на каждом PR. // // Сравните с cmd/fx-di-shared/ — тот же код, но всё в одном файле. import "go.uber.org/fx" func main() { fx.New( // Общая инфраструктура InfraModule, // Бизнес-домены — каждая команда владеет своим файлом. // Добавить новый домен = новый файл + одна строка здесь. AuthModule, UserModule, NotificationModule, // API — собирает сервисы в HTTP-хендлер APIModule, ).Run() }