Это REST API приложение, разработанное в качестве тестового задания. Приложение позволяет управлять банковскими картами и выполнять переводы средств между картами
Приложение построено на стеке Spring Boot и упаковано в Docker для лёгкого развертывания
- Java 21
- Spring Boot 3
- Spring Security + JWT: Аутентификация и авторизация
- Spring Data JPA (Hibernate): Работа с базой данных
- PostgreSQL: Реляционная база данных
- Liquibase: Управление миграциями схемы БД
- Docker: Контейнеризация и развёртывание
- Maven: Сборка проекта
- JUnit 5 & Mockito: Юнит и интеграционное тестирование
- OpenAPI 3 (Swagger): Документация API
- Регистрация новых пользователей (
/api/v1/auth/signUp) - Вход в систему и получение JWT (
/api/v1/auth/login)
- Создание, блокировка/активация и удаление банковских карт для любого пользователя
- Просмотр постраничного списка всех карт и всех пользователей в системе
- Просмотр постраничного списка своих карт с возможностью фильтрации и поиска
- Мгновенная блокировка своей карты
- Перевод средств между своими картами
- Пароли пользователей хэшируются с использованием BCrypt
- Номера карт в базе данных хранятся в зашифрованном виде (AES)
- Доступ к эндпоинтам разграничен по ролям
- Docker
-
Клонируйте репозиторий:
git clone https://github.com/swankygawk/Bank_REST_test_task.git cd <название папки>
-
Создайте файл
.env:В корне проекта создайте файл с именем
.envи скопируйте в него следующее содержимое, подставив свои секретные ключи:JWT_SECRET=long_secret_jwt_key CRYPTO_SECRET=long_secret_crypto_key -
Запустите приложение с помощью Docker Compose:
Выполните в терминале следующую команду:
docker-compose up --build
Команда
--buildнеобходима при первом запуске, чтобы собрать образ Java-приложения -
Готово! Приложение будет доступно по адресу
http://localhost:8080
Интерактивная документация API доступна по адресу:
В Swagger UI вы можете изучить все эндпоинты, их параметры и модели данных, а также отправлять тестовые запросы прямо из браузера
При первом запуске с помощью миграций Liquibase создается пользователь-администратор:
- Логин:
admin - Пароль:
12345678
Вы можете использовать эти данные для получения JWT (через эндпоинт /api/v1/auth/login) и тестирования защищённых эндпоинтов