Skip to content

nhitar/ts-logger

Repository files navigation

TS currency app

Описание

Express приложение с REST API, JWT + bcrypt авторизацией, CRUD-эндпоинтами, интеграцией с sqlite3 и Jest тестами.

Приложение представляет из себя REST API для управления валютами с историей цен и кошельками, а также фоновой задачей по синхронизации данных из публичного Binance API.

Реализованные эндпоинты:

  • CRUD управление списком валют и кошельков;

  • Получение истории цен валют и высоты блокчейна;

  • Получение цен валют по тикеру;

  • Покупка/продажа валюты с привязкой к кошельку.

Основные эндпоинты защищены через JWT + bcrypt, получить доступ можно через авторизацию с отладочными данными.

Все эндпоинты покрыты Jest тестами с настроенным CI. Сами эндпоинты описаны в OpenAPI файле, на основе которого работает Swagger UI.

Приложение состоит из следующих директорий и файлов:

  1. src/common/errors/ - кастомные ошибки приложения;

  2. src/common/interfaces/ - общие интерфейсы;

  3. src/controllers/ - обработчики HTTP-запросов;

  4. src/core/ - базовые настройки и логирование приложения;

  5. src/database/ - обёртка над базой данных, скрипт заполнения данными;

  6. src/middleware/ - middleware для проверки авторизации;

  7. src/routes/ - описание маршрутов приложения;

  8. src/services/ - логика взаимодействия контроллера и базы данных, планировщик задач;

  9. src/test/ - директория с Jest тестами;

  10. src/main.ts - точка входа приложения;

  11. 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

OpenAPI

Swagger UI доступен по эндпоинту:

http://localhost:3000/api-docs

Отладочные пользователи

Авторизация осуществляется через POST /auth/login.

email: user@example.com

password: password

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors