Skip to content

Luxtington/EffectiveMobileTask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏦 Банковское приложение

Веб-приложение для управления банковскими картами и транзакциями - Тестовое задание на позицию 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

1. Запустить Docker Desktop

docker desktop start

2. Перейти в папку проекта

cd путь_к_проекту_на_вашем_компьютере

3. Запустить контейнеры с приложением, базой данных

docker-compose up -d

4. Проверить статус контейнеров

docker-compose ps

Unit тесты

mvn test

Тестирование API

  1. Получить токен через /api/auth/login
  2. Добавить заголовок: Authorization: Bearer {token}
  3. Тестировать эндпоинты в Postman или Swagger

Начальные данные

  • Администратор: admin1
  • Роли: ROLE_ADMIN, ROLE_USER

База данных

  • PostgreSQL 15 в Docker
  • База: bank_db
  • Пользователь: bank_user
  • Пароль: bank_password

JWT

  • Секрет: настраивается в application.properties
  • Время жизни: 24 часа

👨‍💼 Администратор

  • ✅ Создание, блокировка, активация, удаление карт
  • ✅ Управление пользователями
  • ✅ Просмотр всех карт и транзакций
  • ✅ Полный доступ к системе

👤 Пользователь

  • ✅ Просмотр своих карт
  • ✅ Переводы между своими картами
  • ✅ Просмотр баланса и истории транзакций
  • ✅ Пополнение карт

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

Для просмотра документации запустите приложение, перейдите в браузере по ссылке: http://localhost:8080/api/docs Также присутствует документация внутри самого приложения - JavaDoc

В качестве улучшений можно интегрировать динамическое изменение статуса карты с использованием планировщика, например Scheduled Task, а также обернуть пополнение с номера телефона в транзакционную модель

Releases

No releases published

Packages

No packages published