/test-ursip-app

Test task URSiP

Primary LanguageCSS

Тестовое задание «Список статей»

Задачи

  1. На главной странице вывести статьи с постраничным разбиением (GET: /api/article?limit=1&offset=2). Статьи должны кешироваться, то есть при выборе загруженной ранее страницы они не должны загружаться повторно;
  2. При ajax запросах отображать loader-индикатор;
  3. Сделать фильтрацию статей по дате (date range) и названию;
  4. Создать форму добавления новой статьи (POST: /api/article);
  5. При клике на заголовок должнен открываться текст статьи (GET: /api/article/:id);
  6. Добавить кнопку удаления статьи (удаляет только из стора);
  7. Под статьей вывести кнопку показывающую / скрывающую комментарии (текст кнопки тоже меняется). Комментарии должны кешироваться и не загружаться повторно через API (GET: /api/comment);
  8. Показывать loader при загрузке комментариев;
  9. Создать форму добавления нового комментария к статье от анонимного пользователя. (POST: /api/comment).

Будет большим плюсом

  1. Роутинг (в том числе при постраничной навигации);
  2. Реализация редюсеров с помощью immutable js;
  3. Написать middleware для работы с api.

API

В back-end лежит js-приложение, реализующее REST api. У него отдельный package.json, поэтому перед первым запуском не забудьте выполнить команду npm install в директории back-end. Запускать это приложение отдельно не нужно, так как оно поднимается вместе с webpack-dev-server командой npm start из корневой директории. Запросы к API проксируются вебпаком, то есть обратиться к апи можно через localhost:3000/api/

Требования к коду и используемым библиотекам

Приложение необходимо реализовать на стеке React + Redux. Код должен быть написан в стандарте ES6. В остальном полная свобода.

Внешний вид приложения

Тут тоже на ваше усмотрение. Можете использовать, библиотеки готовых компонетов, создавать компоненты самостоятельно, демонстрируя навыки верстки, работу с css-препроцессорами и так далее. Желательно, чтобы в итоге получилось приятное на вид, корректно работающее приложение.

Результат выполнения задачи вы можете прислать нам архивом, либо ссылкой на гитхаб