Skip to content

TusyaSonne/BackendBankCardsManaging

Repository files navigation

Backend-часть системы управления банковскими картами

Данный проект представляет собой серверную часть системы управления банковскими картами. Проект разработан на Java с использованием Spring Boot в качестве тестового задания на вакансию Java-junior dev.


Установка и запуск

Требования:

  • Docker Desktop (либо Docker и Docker Compose)

Шаги:

  1. Клонируйте репозиторий:
    git clone https://github.com/TusyaSonne/BackendBankCardsManaging.git
  2. Перейдите в директорию проекта:
    cd BackendBankCardsManaging
  3. Запустите приложение:
    docker-compose up --build

Документация API

После запуска перейдите на http://localhost:8080/swagger-ui.html, чтобы увидеть описание всех доступных эндпоинтов.

Аутентификация через JWT

Для работы с защищёнными эндпоинтами необходимо авторизоваться с помощью JWT-токена.
Для этого необходимо вставить JWT-токен, полученный в теле ответа при регистрации или аутентификации, в окно Authorize (в правом верхнем углу Swagger UI).
*Вставлять токен необходимо в формате eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...


Основные функционал

  • Аутентификация и авторизация пользователей:
    • Аутентификация реализована с помощью Spring Security и JWT.
    • Поддержка ролей:
      • Администратор
      • Пользователь
  • Возможности администратора:
    • Создание, чтение, удаление и изменение статуса всех карт.
    • Просмотр всех совершенных транзакций.
    • Установка дневного лимита на снятие средств с карты.
    • Управление пользователями (чтение, изменение роли).
  • Возможности пользователя:
    • Просмотр своих карт.
    • Блокировка своих карт.
    • Просмотр истории транзакций по своим картам (как со всех своих карт, так и с определенной карты).
    • Перевод денег с одной карты на другую (в случае, если у пользователя несколько карт).
    • Списание средств со своей карты (до максимального установленного лимита на день).
    • Просмотр значения установленного дневного лимита.
  • Пагинация и фильтрация:
    • При чтении карт доступна пагинация и фильрация по статусу (ACTIVE, BLOCKED, EXPIRED).
    • При чтении транзакций доступна пагинация и фильтрация по типу (WITHDRAW, TRANSFER).

Подробные описания эндпоинтов смотрите в документации OpenAPI.


Технологии

  • Язык программирования: Java (17)
  • Фреймворк: Spring Boot (3.4.4)
  • Безопасность: Spring Security
  • База данных: PostgreSQL (16.4)
  • ORM: Hibernate
  • Миграции БД: Liquibase
  • Тестирование: JUnit 5, Mockito
  • Контейнеризация: Docker, Docker Compose
  • Документация: OpenAPI (Swagger)
  • Сборщик: Maven

About

REST API for managing bank cards with JWT Authentication and role model

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published