Полный код с README на github.
Система предназначена для организации работы с инцидентами и внедрения on-call дежурст.
Модель доступа. Пользователи могут зарегистрироваться сами, либо их может зарегать кто-то еще, но с обязательной галкой
Require password change on first login. Это заставит пользователя сменить пароль при первом входе в систему.Далее глобальный админ создает "команды" внутри. И добавляет первых пользователей в эти команды, делая их owner-ами команд. Owner-ы команд имеет расширенные права по работе с командами, например добавление участников, создание расписаний и прочее.
Инцидент назначается на команду, любой участник команды может с ним работать. Участники команд видят только свои инциденты и свое расписание.
Публичное API (бэк) написан на golang с использованием gin в качестве веб-сервера и СУБД postgres.
Фронт - react + vite.
Если кратко про архитектуру.
Бэк построен на микросервисах, их всего 5:
1. auth. Отвечает за авторизацию по JWT.
2. teams. Команды. Тут также поднят TLS сервер на доп порту, который по mTLS принимает внутренние запросы от других микросервисов.
3. incidents. Работа с инцидентами. Общается с teams по mTLS.
4. schedules. Работа с расписанием и шифтами. Также общается с teams по mTLS.
5. gateway. Прокся на go до других микросервисов.
Фронт отдает nginx, который проксирует все запросы в gateway, который их проксирует в микросервисы.
Внутренние ручки под mTLS начинаются с /internal и не доступны публично.
Система предполагает установку в self-hosted варианте. Ставится через docker-compose. Внутри репозитория есть Makefile для удобства инсталляции.
PS.
Скрин не влезает. Будет вторым сообщением)
#pet
#induty