dkzlv / aviasales-test

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Выполнено тестовое (хотя у меня и не просили).

Запуск

Старый-добрый CRA: yarn install && yarn start.

FAQ

  1. почему не виртуализированный список? — Кажется, основной юзерский сценарий исключает возможность появления даже 50 результатов. Это как Гугл, у которого до второй страницы (запрос №11) доходит всего 5% пользователей. Кажется, большого смысла поставлять в таком кейсе react-window нет.
  2. почему такие императивные анимации? — Показалось для скоупа задачи излишним тащить transition-group/spring. К чему раньше времени раздувать бандл.
  3. почему CSS-переменные? — У вас тёмная тема, показалось логичным их втащить; не взял на себя смелость добавить обработку для prefers-color-scheme, дизайнеры за такое бы съели с потрохами.

Список самодеятельности

Не всё по ТЗ/макету было понятно — видимо, в том и задумка 😀 Кроме очевидных вещей (отсутствующие стейты билета, списка, неясно, что такое "оптимальный" и пр.) я сверх ТЗ напридумывал вот что:

  1. лого крутится при загрузке. Не хотелось еще один спиннер, а надо как-то показывать, что выдача не конечная.
  2. для проверки реактивности можно потыкать на логотип, каждый тык будет запускать процесс получения поиска и дальнейшую выгрузку билетов.
  3. втащил i18n, потому что увидел у вас .com-домен. Мой способ неоптимальный (лучше делать переводы в билд-тайме и раскидывать юзеров на два бандла), но тут я ограничен CRA.

About


Languages

Language:TypeScript 73.1%Language:SCSS 22.5%Language:HTML 4.1%Language:Shell 0.3%