/ReduxSagaCrud

Primary LanguageTypeScript

Общий фидбек по ТЗ

Минимально запрошенный в ТЗ функционал не сделан, поэтому результат не приняли.

Стоило сфокусироваться на минимальной части, сделать так, чтобы минимальный функционал "сиял", отлично работал. Я думаю, что доп. часть можно было вообще не делать, если бы минималка была отполирована до блеска. В ТЗ качество, важнее количества, но при этом важно полностью сделать ту часть тестового которая отмечана как "обязательная".

Глобально - мне понравилось как ты разобралась с сагами и авторизацией, я вижу что ты пыталась со всем этим справиться, и почти справилась. Концептуально приложение собрано правильно, тебе просто не хватило фокуса на важном (минимальный функционал), вместо этого ты попыталась решить побольше задачек из доп. части. В итоге получилось большое приложение, которое в целом вроде бы работает, но потыкаешь в него тут и там, и оно разваливается. Нужно было пройтись по всем частям минималки, аккуратно обработать все крайние кейсы в коде, и получилось бы отлично.

Рекомендую в следующем ТЗ так и поступить, сфокусироваться на маленькой части, но сделать ее красиво и аккуратно, а после этого уже переходить к доп части.

Короче: Если в ТЗ что-то указано как минимальное или обязательное, то это что-то должно работать полностью так как указано, без этого не имеет смысла отправлять на проверку задание.

Может показаться что я полностью закритиковал твою работу, но я вижу какую большую ты проделала работу чтобы разобраться с сагами и авторизацией, и это очень круто. Для отличного результата тебе не хватило фокуса на важном, а не навыков работы с кодом, это хорошо, потому нучиться фокусироваться проще чем разобраться с сагами :)

Чего не хватает в readme, это стоит делать вообще во всех проектах:

  • ссылки на работающий проект, например на github pages
  • инструкции как запустить проект для разработки

Задание

Минимальный функционал для панели администратора:

Авторизация с сохранением токена и рефреш-токена в куках;

Авторзация реализована, не до конца.

  1. После обновления страницы просит авторизоваться снова.
  2. После авторизации я не понимаю что я авторизован, интерфейс по прежнему предлагает залогиниться в правом верхнем углу.
  3. Не обработаны ошибки авторизации, я ввожу неверный пароль, апи возвращает 400 код, но я, как пользователь этого не понимаю

Токены сохраняются в куки, тут ок.

Обновление токена с помощью рефреш-токена, при истечении времени жизни токена;

Вижу, что попытка была, но обновление токена не работает до конца. Каждый раз при обновлении страницы код пытается обновить токен, но что-то идет не так и авторизация слетает.

При этом, сам подход верный, нужно только отладить код.

Список постов с постраничной навигацией (информация для постранички возвращается в заголовках ответа на запрос списка постов).

Постраничка реализована

Максимальный функционал для панели администратора (по желанию):

Добавление поста;

Реализовано, но не очень аккуратно. Валидация от сервера обработана не до конца, если я не заполнил какое то поле, вся форма сбрасывается. Ошибка 422 от сервера выводится, но не понятно в каком конкретно месте я ошибся.

Редактирование поста;

Реализовано, но не полностью, иногда не сохраняется, после сохранения я не понимаю что запись сохранилась. Как пользователь, я жму кнопку "Изменить" для меня ничего не происходит, интерфейс не реагирует никак

Удаление поста;

Реализовано

Список/добавление/редактирование/удаление авторов;

Не реализовано

Список/добавление/редактирование/удаление тегов.

Не реализовано

_test_crud_redux-saga

тестовое задание

в разработке

Описание проекта:

Создать CRUD приложение с авторизацией, React 17, redux-saga, connected-react-router

Технический стек

  • React 17
  • Redux + Redux-saga
  • React Router DOM, реализация routing
  • connected-react-router
  • Bootstrap
  • react-toastify
  • Eslint, prettier

Структура приложения и функционал

1. Главная страница:

  • доступ без авторизации
  • регистрация

2. Страница Dashboard:

  • доступ только авторизованным
  • форма создания нового поста (в select подгружены все авторы, отдельным списком вынесены все существующие теги)
  • список всех существующих постов с возможностью удалить пост или просмотреть
  • пагинация

3. Страница поста:

  • доступ только авторизованным
  • форма, заполненная полученными данными поста с возможностью редактирования

Аутентификация:

  • токены доступа
  • axios interceptors

Зарегистрированный пользователь может:

  • просмотреть список постов, авторов, тегов
  • добавить пост
  • снять пост с публикации
  • редактировать пост