Предназначен для хранения и извлечения файлов в облачном хранилище.
Проект реализова с использованием следующих Api:
- Spring boot;
- Spring security;
- Spring data;
- Spring mvc;
- Jwwt;
- Lombok;
- Liquebase;
- MySql;
- Junit;
- Testconteiners;
- Docker;
- Docker-compose.
Для запуска приложения необходимо:
- установить Docker Compose;
- сделать git pull приложения;
- перейти в корневую папку приложения;
- собрать проект выполнив команду docker-compose build;
- выполнить команду docker compose up -d
- перейти по адресу http://localhost:8081/
- структура проекта схематично отображена в директории documentation;
- ТЗ проекта представлено в директории documentation;
- файлы системных логов записываются:
- В Windows тома находятся по умолчанию в \wsl.localhost\docker-desktop-data\data\docker\volumes\moneytransferservice_logs_app_data;
- В Linux тома находятся по умолчанию в /var/lib/docker/volumes/;
- по умолчанию сервер запускается на порту 8080;
- процесс обмена backend'ом и frontend'ом описан в CloudServiceSpecification.yaml.
- Создавать REST-приложение;
- Использовать библиотеку валидации jakarta.validation.Valid;
- Обрабатывать Json объекты с использованием аннотаций;
- Использовать @CrossOrigin аннотацию для совместного использования ресурсов между разными источниками;
- Настраивать политику обратки входящих запросов;
- Реализовывать аутентификацию с использование токенов;
- Создавать и настраивать фильтры в spring security;
- Реализовал разделение активных профилей для разработки и тестов;
- Создавать Dockerfile для backend'а и frontend'а;
- Создавать композиции с помощью docker-compose.yaml;
- Использовать тома для сохранения лог фалов приложения;
- Использовать spring data jpa;
- Создавать собственные запросы к MySql;
- Создавать и управлеять связанными таблицами;
- Создавать миграции с использованием Liqeibase;
- Фильтровать миграции в зависимости от context'a;
- Настройка логирования(разделение по уровням логирования, логирование в файл и в консоль) с использованием Logback;
- Интеграционное тестирование приложения на уровне представления с использованием MockMvc;
- Интеграционное тестирование с использованием аннотации @Testcontainers;