Express приложение с REST API, JWT + bcrypt авторизацией, CRUD-эндпоинтами, интеграцией с sqlite3 и Jest тестами.
Приложение представляет из себя REST API для управления валютами с историей цен и кошельками, а также фоновой задачей по синхронизации данных из публичного Binance API.
Реализованные эндпоинты:
-
CRUDуправление списком валют и кошельков; -
Получение истории цен валют и высоты блокчейна;
-
Получение цен валют по тикеру;
-
Покупка/продажа валюты с привязкой к кошельку.
Основные эндпоинты защищены через JWT + bcrypt, получить доступ можно через авторизацию с отладочными данными.
Все эндпоинты покрыты Jest тестами с настроенным CI. Сами эндпоинты описаны в OpenAPI файле, на основе которого работает Swagger UI.
Приложение состоит из следующих директорий и файлов:
-
src/common/errors/- кастомные ошибки приложения; -
src/common/interfaces/- общие интерфейсы; -
src/controllers/- обработчики HTTP-запросов; -
src/core/- базовые настройки и логирование приложения; -
src/database/- обёртка над базой данных, скрипт заполнения данными; -
src/middleware/- middleware для проверки авторизации; -
src/routes/- описание маршрутов приложения; -
src/services/- логика взаимодействия контроллера и базы данных, планировщик задач; -
src/test/- директория сJestтестами; -
src/main.ts- точка входа приложения; -
openapi.yaml- описание API приложения.
Клонирование репозитория:
git clone https://github.com/nhitar/ts-logger.git
cd ts-loggerУстановка зависимостей и запуск приложения:
npm i
npm startСервер работает на http://localhost:3000.
Запуск тестов:
npm testЗапуск через Dockerfile:
docker build . -t currency-image
docker run --rm --name currency-container -p 3000:3000 currency-image
Для запуска тестов можно убрать порт и переопределить аргумент CMD:
docker run --rm --name currency-container currency-image test
Swagger UI доступен по эндпоинту:
http://localhost:3000/api-docs
Авторизация осуществляется через POST /auth/login.
email: user@example.com
password: password