- Go 1.23+
- PostgreSQL
- Redis
Сделал ветку develop От неё уже есть две ветки:
- feature/models, там пишешь код моделек
- feature/handlers - код хендлеров
- Можешь создавать по такому же принципу ветки и делать в них
go mod tidyairУбедись, что у тебя установлен
air. Если нет — установи:go install github.com/air-verse/air@latest
swag init --generalInfo cmd/main.go --output docsУбедись, что у тебя установлен
swag:go install github.com/swaggo/swag/cmd/swag@latest
Swagger-документация будет доступна по маршруту /swagger/index.html, если подключён httpSwagger.Handler.
logger.Log.Info("Logger initialization successful!")
logger.Log.Info("App starting",
zap.String("name", config.GetAppName()),
zap.String("address", config.GetAppHost()+":"+config.GetAppPort()),
zap.String("dsn", config.GetPostgresDSN()),
).
├── cmd/ # Точка входа в приложение
│ └── main.go # Запуск HTTP-сервера, зависимостей и маршрутов
├── docs/ # Swagger-документация (сгенерировано через swag)
│ ├── docs.go
│ ├── swagger.json
│ └── swagger.yaml
├── go.mod, go.sum # Зависимости проекта (модуль Go)
├── internal/ # Основная бизнес-логика (handlers, сервисы, доступ к данным)
│ ├── api/
│ │ └── v1/
│ │ ├── handlers/ # HTTP-обработчики (controllers)
│ │ │ └── *.go # Например: word_handler.go, user_handler.go и т.д.
│ │ └── routes/ # Роутинг chi (RegisterWordRoutes, и т.п.)
│ │ └── *.go
│ ├── config/ # Загрузка конфигурации (viper)
│ │ └── config.go
│ ├── db/ # Инициализация базы, миграции, подключения (ещё пусто)
│ ├── repository/ # Слой доступа к данным (models, postgres-реализации, DTO)
│ │ ├── models/ # GORM-модели таблиц
│ │ ├── postgres/ # Реализации репозиториев через GORM
│ │ └── schemas/ # DTO-схемы (вход/выход)
│ ├── router/ # Сборка chi.Router
│ │ └── router.go
│ ├── swagger/ # Связь между swagger-доками и chi (опционально)
│ └── utils/ # Хелперы, утилиты, форматирование, ошибки и т.д.
├── migrations/ # SQL- или go-модули для миграций базы данных
├── pkg/
│ └── logger/ # Zap-логгер (переиспользуемый)
│ └── logger.go
└── README.md # Главный файл описания проектаinternal/— основная логика проекта, разбитая по слоямrepository/— реализация работы с БД: модели, схемы и репозиторииapi/v1/— REST API (обработчики + маршруты)pkg/— внешний код, пригодный для повторного использования