https://news-portal-delta.herokuapp.com
Необходимо разработать новостной портал, состоящий из клиентской и административной частей.
Клиентская часть представляет собой сайт, на котором размещены новости. Для новости в списке отображается миниатюра Фото, Заголовок и Краткое ревью записи. Реализовать возможность просмотреть конкретную новость подробно.
Доступ к административной части есть только у авторизованных пользователей. Реализовать возможность регистрации с подтверждением учетной записи через электронную почту (путём автоматической генерации пароля и отправки его на указанный email). Реализовать авторизацию пользователей по логину и паролю.
Для авторизованных пользователей в административной части доступны 2 раздела:
Управление пользователями Управление новостями
Управление пользователями доступно только пользователям с ролью администратора, управление новостями редактору и администратору.
В разделе “Управление пользователями” доступен список зарегистрированных в системе пользователей в виде таблицы. Поля таблицы пользователей:
Логин Фамилия Имя Отчество Роль
В списке реализовать пейджинг (отображать по 10 элементов на странице), поиск по всем полям таблицы, сортировку по всем полям таблицы.
Реализовать возможность добавления нового пользователя (с указанием всех необходимых полей и отправкой сгенерированного пароля на указанный электронный адрес), редактирования существующих пользователей, удаления пользователей.
Поля пользователя:
Фамилия Имя Отчество Логин Роль (администратор или редактор) Дата рождения
Дополнительно: пользователь не может удалить из системы сам себя.
Все описанные операции модификации данных пользователей на уровне API должны быть защищены от несанкционированного использования и доступны только авторизованным пользователям с ролью администратор.
В разделе “Управление новостями” показать список добавленных пользователями новостей в виде таблицы. Поля таблицы:
Миниатюра фото Заголовок новости Дата добавления
Реализовать возможность добавления, редактирования и удаления новостей.
Поля новости:
Фото Заголовок Краткое ревью Текст новости (ввод текста новости выполняется с помощью текстового редактора WYSIWYG)
Все описанные операции модификации данных новостей на уровне API должны быть защищены от несанкционированного использования и доступны только авторизованным пользователям с ролью администратор или редактор.
Серверная часть приложения должна быть реализована с использованием фреймворка ASP.NET Core 2.0 на языке C#. Для реализации системы авторизации использовать ASP.NET Core Identity; также обязательно использовать в проекте ORM Entity Framework Core.
Весь API приложения должен быть реализован с учетом REST и иметь документацию в Swagger UI.
Вся значимая бизнес-логика приложения должна быть покрыта Unit тестами.
Допускается использование Automapper, другие библиотеки/фреймворки по согласованию.
Работающее приложение со всеми зависимостями должно быть развернуто в Docker на тестовом сервере. Сборка приложения и развертывание должно быть автоматизировано с использованием Build/Release TFS.
Клиентская часть приложения должна быть реализована с использованием следующих библиотек: React, Redux, ReduxForm, React-Router, Lodash. Допускается использовать любой css-фреймворк: Bootstrap / Material и подобные. Для работы с CSS использовать препроцессор Less и пост-процессор PostCSS.
Для сборки проектов использовать Webpack, Babel. Реализовать development и production сборку. Для линтинга проекта и соблюдения код-стайла использовать: ESLint, Eslint-config-airbnb, StyleLint, Stylelint-config-standart. Изменять некоторые правила разрешается. В npm scripts добавить команду deploy для production сборки на CI.