Skip to content
This repository was archived by the owner on Jun 14, 2025. It is now read-only.

kshamiev/sungora_history

Repository files navigation

Технические директивы

Все команды описанные в документации и запускаемые в консоли выполняются от корня проекта

Стенд - Сервер на котором работает приложение (vps, docker, etc...)

Структура проекта

/api            документация на api приложения (link: host:port/api/docs/index.html)
/cmd            дополнительные служебные точки входа в приложения (main, golang)
/data           служебные данные для ведения проекта
/docs           всевозможная документация на проект
/internal       основной код проекта реализующий бизнес логику (golang)
    /config     конфигурации
    /graphql    GraphQL
    /grpcserver  GRPC server для взаимодействия с другими сервисами
    /handlers   контроллеры обработчики запросов
    /model      (типы высокого уровня)
                модели реализующие бизнес логику приложения 
                работа с БД
    /workers    Фоновые задачи приложения
    ...         возможно какие-то дополнительные функциональные пакеты
/migrations     папка миграций БД проекта
/pkg            вспомогательный (служебный) (модульный - пакеты) код проекта (golang)
    /typ        (типы низкого уровня)
                пользовательские примитивные типы
                функции и методы по работе с ними (конвертации...)
    /pkg/models (типы среднего уровня)
                типы отражающие структуру БД и реализующие непосредственную работу с ней в парадигме ОРМ
/proto          protobuf files (должен быть вынесен в отдельный служебный репозиторий)
/static         статичные данные проекта (выкладываются на сервер)
/test           вспомогательный для тестирования           

Структура репозитория и деплой реального проекта

Ветки

master      бой
stage       релиз кандидат
dev         разработка
username    ветка разработчика
234         ветка задачи

Регламент деплоя:

Бой
http://domain.ru/
Выкладывается по обнаружению нового классического тега без префиксов.
Код должен быть в ветке master

Релиз кандидат
http://stage.domain.ru/
Выкладывается по обнаружению нового тега с префиксом.
Код должен быть в ветке release

Разработка
http://dev.domain.ru/
Выкладывается по обнаружению пуша в ветку dev и из ветки dev

Разработка через merge request

Для запуска приложения в различных режимах используются флаги, разные конфиги и как вариант автоматизации "Makefile.Sample". Он может быть скопирован и переименован для использования в "Makefile" (добавлен в .gitignore)

Для выполнения задачи создается ветка от ветки dev. Имя ветки это номер задачи. Ветка пробрасывается на origin и связывается с ней В ней ведется работа над задачей. Создаются миграции. Пишутся тесты и т.д. В процессе работы коммитим, пушим в репозиторий. После заверешния работы возвращаемся на dev. Забираем измнения сделанные за время работы над задчей в ветке dev. Возвращаемся обратно в ветку с задачей. Делаем merge с dev. Решаем конфликты если они появляются. Пушим законченную задачу на сервер. Формируем request.

git checkout -b 234
git push --set-upstream origin 234
...it`s work
git add .
git commit -am "comment"
git push
...
git checkout -b dev
git pull
git checkout 234
git merge dev
...conflict resolve if exists
Важно: если есть миграция БД она должна быть самой последней. И стоять после всех полученных миграций от дургих разработчиков!
git push

Создаем merge request


Работа с БД

Документирование api

Линтеры (linter)

Версии по тегам

master
v1.4.1
  • Исправлены ошибки и улучшен инструмент generate (grpc type)
  • Завершена концепция структур бизнес моделей
  • Модели (БД) вернулись ан свое место.
v1.4.0
  • Реализована обертка и обработка ошибок GRPC
  • Переработка инструментария по работе с GRPC (контекст, обработка ошибок, конвертация типов)
  • Реализован инструмент по созданию сервисов и методов взаимодействия типов по GRPC
  • Пакет typ перенесен в подпакет работы с grpc
v1.3.0
  • Немного переработана структура internal (middleware & websocket вынесены в отдельные пакеты)
  • Работа над концепцией бизнес модели
  • Реализована концепция работы с типа ENUM
  • Исправление мелких недочетов
v1.2.4
  • Обновлена либа по работе с дробными числами (была ошибка при работе с БД).
  • Написан заготовка примера бизнес модели
v1.2.3
  • Обновление документации (мелкие неточности)
  • Проработана работа с контекстом в grpc и конвертация типов
  • Обновлен пример миграции
  • Переезд в свою отедльную ветку (v1)
v1.2.2
  • Обновлена, расширена и исправлена работа с вебсокетом
  • Оптимизирована и улучшена работа планировщика задач (scheduler)
  • Изменена структура и инициализация хендлеров
  • Добавлен пример работы с grpc
v1.0.0
  • Первая стабильная версия

About

web kit sungora (in language go)

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •