README.md

Для запуска приложения понадобится наличие 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-архитектуру.
  • Вывод статей постранично.
  • Возможность задать рубрику для статьи при загрузке (например, Спорт/Финансы/Путешествия/Политика) + возможность показать на главной странице только статьи определенной рубрики.
  • Покрытие тестами
Описание

Разработать новостной онлайн-портал, позволяющий журналистам загружать статьи в заранее подготовленном формате, после чего они автоматически будут добавлены на главную страницу приложения.

Конвейеры
0 успешных
0 с ошибкой