Для запуска приложения понадобится наличие docker
Запуск необходимого контейнера с БД
docker run --rm -p 3306:3306 --name dataart-sql -e MYSQL_ROOT_PASSWORD=test -e MYSQL_DATABASE=dataart -d mysql
Описание приложения
Заказчик - известное печатное новостное издание, которое хочет расширить свою аудиторию за счет публикации новостей так же онлайн.
Задача:
Разработать новостной онлайн-портал, позволяющий журналистам загружать статьи в заранее подготовленном формате, после чего они автоматически будут добавлены на главную страницу приложения.
Тех. задание:
Приложение состоит из двух страниц:
Страница 1: Новостной портал.
На странице отображены все загруженные на портал статьи с заголовками, выделенными увеличенным жирным шрифтом. Статьи отображаются в порядке от новых к старым. Между статьями должен быть небольшой отступ чтобы визуально отделять их друг от друга.
######Страница 2: Страница загрузки статей.
На странице присутствует диалог для выбора архива с жесткого диска и кнопка “Загрузить”. Архив статьи представляет собой ZIP архив с единственным тесктовым файлом внутри - article.txt
Заголовком статьи считается первая строка из этого файла, остальное содержимое считается телом статьи.
Страница должна выдавать ошибку:
- если загружаемый файл не является zip архивом
- при наличии в архиве любых других файлов, кроме article.txt
- если файл article.txt содержит менее 2х строк (отсутствует тело статьи)
Требования к системе:
При перезагрузке сервера приложения все статьи должны быть доступны в том же объеме, в каком были до выключения сервера.
Исходный код должен быть выложен в любой из публичных git репозиториев (github, bitbucket) и содержать пошаговую инструкцию по сборке и развертыванию приложения на чистом сервере (при это желательно максимально ее оптимизировать, в идеале - один приложенный скрипт).
В качестве базы данных (если вам таковая понадобится) - рекомендуется использовать H2 (https://www.h2database.com/html/main.html) + ее автоматическое заполнение некоторым количеством тестовых данных.
Стек предлагаемых технологий:
Spring Boot + Spring MVC для серверной части. HTML + Bootstrap для клиентской части. Клиентский интерфейс может быть минималистичным, но функциональным. Например, оценка за “топорный” дизайн снижаться не будет, но если случится наслоение текста друг на друга в нечитаемую массу - это будет рацененно как ошибка.
Усложнения, за которые можно получить дополнительные баллы (оценивается отдельно от базовой функциональности):
- Использовать REST-архитектуру.
- Вывод статей постранично.
- Возможность задать рубрику для статьи при загрузке (например, Спорт/Финансы/Путешествия/Политика) + возможность показать на главной странице только статьи определенной рубрики.
- Покрытие тестами
Описание
Разработать новостной онлайн-портал, позволяющий журналистам загружать статьи в заранее подготовленном формате, после чего они автоматически будут добавлены на главную страницу приложения.