Сервис КупиПодариДай позволяет скидываться людям на подарки, создавать свои собственные идеи на подарки а так же создавать собственные списки из них.
Для написания бэкенда сервиса использовался фреймворк Nest.js на основе Node.js. Он позволяет писать намного меньше кода по сравнению с последним, используя классы.
- Благодаря встроенному компилятору TypeScript Nest.js позволяет типизировать все сущности в приложении, что позволяет на этапе компиляции обнаруживать ошибки.
- Построение приложений на Nest.js базируется на паттерне Dependency Injection. Суть которого заключается в подключении небольших модулей (в качестве которых могут выступать группы роутов по одной тематике) в один корневой модуль. Каждый модуль состоит из контроллера, сервиса и репозитория. Благодаря Dependency Injection фреймворк позволяет независимо от модуля переиспользовать состовляющие других модулей т.е контроллеры, сервисы и репозитории, что сказывается на скорости работы приложения в лучшую сторону.
- Для подключения к базе данных используется pipeline
- В качестве базы данных использована Postgres. Для формирования запросов к базе данных используется встроенный в фреймворк querry parser TypeORM
- В зависимости от режима работы приложения, созданы соответствующие файлы окружения env.
- Для обширного логгирования ошибок серверного приложения использовался пакет winston.
- Реализация входа по токену осуществлена через библиотеку passport-jwt.
- Перед отправкой запроса и его обработкой осуществляется проверка содержимого запроса из тела через DTO. Так же описаны модели сущностей Entities для каждого модуля.
- Сервис включает в себя 4 основных модуля offer, user, wish, wishlist и один вспомогательный auth.
Для использования приложения необходима авторизация
В личном кабинете пользователя доступно редактирование данных
Ленты созданных подарков и коллекции доступны в соответствующих вкладках
Для добавления подарка используется соответствующая форма
Основная информация о подарке и список скинувшихся
- Установка зависимостей:
npm install
- Режим разработки:
npm start:dev
- Режим production:
npm start:prod
- Сформировать проект для последующего размещения на ресурсах:
npm build