Веб-приложение для управления банковскими картами и транзакциями - Тестовое задание на позицию Junior Java Developer в EffectiveMobile
- JWT токены для безопасной аутентификации
- Ролевая модель:
ROLE_ADMINиROLE_USER - Spring Security с настройкой доступа к эндпоинтам
- Регистрация новых пользователей
- Авторизация с выдачей JWT токенов
- Смена пароля для авторизованных пользователей
- Валидация данных с помощью Bean Validation
- Генерация уникальных номеров карт
- Создание карт администраторами
- Блокировка/активация карт
- Пополнение баланса карт
- Просмотр баланса и истории транзакций
- Переводы между картами одного пользователя
- Проверка баланса перед переводом
- История транзакций с фильтрацией
- Валидация данных на всех уровнях
- Обработка исключений с понятными сообщениями
- Логирование операций
- Защита от SQL-инъекций
- Spring Boot 3.2 - основной фреймворк
- Spring Security - безопасность и авторизация
- Spring Data JPA - работа с базой данных
- PostgreSQL - реляционная база данных
- Liquibase - миграции базы данных
- JWT - токены аутентификации
- MapStruct - маппинг объектов
- Lombok - уменьшение boilerplate кода
- Bean Validation - валидация данных
- Java 17+
- Maven 3.6+
- Docker Desktop
docker desktop startcd путь_к_проекту_на_вашем_компьютереdocker-compose up -ddocker-compose psmvn test- Получить токен через
/api/auth/login - Добавить заголовок:
Authorization: Bearer {token} - Тестировать эндпоинты в Postman или Swagger
- Администратор:
admin1 - Роли:
ROLE_ADMIN,ROLE_USER
- PostgreSQL 15 в Docker
- База:
bank_db - Пользователь:
bank_user - Пароль:
bank_password
- Секрет: настраивается в
application.properties - Время жизни: 24 часа
- ✅ Создание, блокировка, активация, удаление карт
- ✅ Управление пользователями
- ✅ Просмотр всех карт и транзакций
- ✅ Полный доступ к системе
- ✅ Просмотр своих карт
- ✅ Переводы между своими картами
- ✅ Просмотр баланса и истории транзакций
- ✅ Пополнение карт
Для просмотра документации запустите приложение, перейдите в браузере по ссылке: http://localhost:8080/api/docs Также присутствует документация внутри самого приложения - JavaDoc
В качестве улучшений можно интегрировать динамическое изменение статуса карты с использованием планировщика, например Scheduled Task, а также обернуть пополнение с номера телефона в транзакционную модель