Git Product home page Git Product logo

bdaygreet's Introduction

Приложение запускается командой:

make up

Описание проекта

В приложении реализована Чистая архитектура. Сам сервис является stateless.

Общение между браузером и сервисом авторизации происходит по REST API.

Api отвечает за обработку запросов, usecase за бизнес логику, repo за работу с БД.

Также присутствует контейнер c Nginx.

Реализована statefull авторизация. Для системы авторизации и сохранения сессий была выбрана бд кэширования Redis.

Для хранения данных о сотрудниках и подписках была выбрана бд PostgreSQL.

Оповещение с ДР приходит на почту сотрудникам. Раз в день через Cron идёт проверка у кого в этот день ДР, после чего отправляются оповещения на почты сотрудников. ВАЖНО: для возможности отправки сообщений сотрудникам необохимо установить логин и пароль от аккаунта email в переменные среды .env (EMAIL_ADDRESS_SERVER, EMAIL_PASSWORD_SERVER)

Система каталогов

cmd - место запуска проекта.

configs - здесь мы получаем в виде структур данные, для подключения к БД.

images_readme - картинки с readme.

pkg - здесь расположены все нужные структуры для проекта.

scripts - здесь находится sql скрипт для БД

service - здесь расположен сам проект.

service/delivery/http - здесь расположен обработчик http запросов, api

service/usecase/core - бизнес-логика приложения

service/usecase/worker - воркер, который работает через cron и проверяет раз в сутки у кого сегодня ДР.

service/repository - репозитории, в которых расположены подключения и запросы к бд

Схема проекта

img.png

Схема БД

img.png

Авторизация

POST /signin

Результатом успешной авторизации является отдача cookie. Пример запроса:
img_2.png

Регистрация

POST /signup

Результатом успешной регистрация является создание нового бользователя в БД. Пример запроса:
img_1.png

Выход

DELETE /logout

Для выхода из аккаунта необходима кука session_id, которая была получена при авторизации.
img.png

Проверка авторизации

GET /authcheck

Аутентификация пользователя. Проверка происходит по куке session_id.
img_3.png

Вывод списка сотрудников

GET /api/v1/employees

Количество сотрудников настраивается через query параметры.
img_5.png

Подписка на оповещения о дне рожденья сотрудника

POST /api/v1/birthday/subscribe

В качестве параметров отправляется айди сотрудника, день рождения которого мы хотим знать.
img_6.png

Отписка от оповещения о дне рожденья сотрудника

DELETE /api/v1/birthday/unsubscribe

В качестве параметров отправляется айди сотрудника.
img_1.png

bdaygreet's People

Contributors

gokert avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.