Проект представляет собой шаблон для создания Go-приложений с расширенным набором функционала. Go-rest-template реализует повседневные рутины (логирование, graceful shutdown, билд, и т.д.) и дает контроль над работой подпрограмм, оркестрируемых снаружи.
Просто хочется сэкономить немножко времени в создании новых приложений :)
- Склонируйте репозиторий
- Запустите скрипт настройки:
./setup.sh
- Следуйте интерактивным подсказкам для ввода нового имени проекта
Скрипт автоматически:
- Заменит все вхождения
go-rest-template
на ваше новое имя проекта - Заменит все вхождения
PROJECTNAME
на ваше новое имя проекта - Обновит все импорты в Go файлах
- Удалит директории
.idea
и.git
- Инициализирует новый Git репозиторий
- Удалит сам себя после выполнения
- HTTP сервер на базе chi/v5 с:
- Graceful shutdown
- Middleware (CORS, компрессия, логирование)
- Версионированным API
- Тестовыми эндпоинтами
- Работа с базами данных:
- Абстракция датастора
- MongoDB драйвер
- Поддержка индексов
- Управление приложением:
- Конфигурация через переменные окружения
- Менеджер компонентов
- Логирование
- Тестирование:
- Unit тесты
- Скрипт для проверки покрытия
- Docker поддержка:
- Multi-stage сборка
- Compose для разработки
- Отдельный образ для тестов
.
├── Dockerfile # Основной Docker образ
├── Dockerfile-unit # Docker образ для тестов
├── Makefile # Основные команды сборки
├── docker-compose.yml # Настройка окружения разработки
├── app
│ ├── Makefile # Команды для приложения
│ ├── cmd # Команды приложения
│ │ ├── config.go # Конфигурация
│ │ ├── http.go # HTTP сервер
│ │ ├── log.go # Настройка логирования
│ │ ├── root.go # Корневая команда
│ │ └── server.go # Управление сервером
│ ├── database # Работа с БД
│ │ ├── drivers # Драйверы БД
│ │ │ ├── mongo # MongoDB драйвер
│ │ │ └── ...
│ │ ├── errors.go # Ошибки БД
│ │ └── factory.go # Фабрика датасторов
│ ├── director # Управление компонентами
│ ├── manager # Менеджер приложения
│ ├── middleware # HTTP middleware
│ ├── resources # HTTP хендлеры
│ │ ├── api # API эндпоинты
│ │ └── version.go # Информация о версии
│ └── utils # Утилиты
├── scripts
│ └── coverage.sh # Проверка test coverage
└── setup.sh # Скрипт настройки проекта
Если вы предпочитаете настроить проект вручную, можно использовать следующие команды:
Для Linux:
sed -i s/go-rest-template/NEW_NAME/g $(find . -type f -not -path "*/\.git/*" -not -path "*/\.idea/*")
sed -i s/PROJECTNAME/NEW_NAME/g $(find . -type f -not -path "*/\.git/*" -not -path "*/\.idea/*")
Для MacOS:
find . -type f -not -path "*/\.git/*" -not -path "*/\.idea/*" -exec sed -i '' "s/go-rest-template/NEW_NAME/g" {} \;
find . -type f -not -path "*/\.git/*" -not -path "*/\.idea/*" -exec sed -i '' "s/PROJECTNAME/NEW_NAME/g" {} \;
- chi/v5 - HTTP роутер
- cors - CORS middleware
- MongoDB драйвер
- env - Работа с переменными окружения
- Клонируйте репозиторий
- Настройте проект через
setup.sh
- Запустите зависимости через Docker Compose:
docker-compose up -d
- Запустите приложение:
make run
# Запуск всех тестов
make test
# Проверка coverage
./scripts/coverage.sh