Skip to content

Ptize/NewsPortal

Repository files navigation

NewsPortal

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages