Поисковик отелей через Travelpayouts API
JS ES6
Vue3 CLI
,Vue Router
Vuex
,vuex-persist
, LocalStorage - стейт-менеджмент и кеширование данныхvuelidate
- валидация полейvue-datepicker
- кастомный дейтпикер для выбора датswiper
- свайпер картинокuniqid
- для уникальных айдиsass
,scoped
- стили: переменные, миксины, вложенность и переиспользование стилейESlint
- линтингVercel
- деплой
-
Вход по логину-паролю
свалидацией полей
-
Кеширование состояния
пользователя в localstorage -
Получение отелей по API
из формы (город, дата, дни) -
Отрисовка списков
найденных / избранных отелей - Сохранение в избранное / удаление отелей
-
Сортировка по цене, по рейтингу
избранных отелей -
Анимации блоков с меняющейся шириной
-
UI-состояния
: hover, active, disabled и т.д. -
Адаптивная верстка
с flex - Кастомные utils для
работы с датами
исклонениями слов
- 3 страницы: Login, Hotels, ErrorPage
- Hotels -
protected route
: доступ только после логина
-
Валидация формы логина
через Vuelidate - Логин - любая почта
- Пароль - без кириллицы, минимум 8 символов
- Кнопка submit: disabled, если поля невалидны
- Кастомный
datepicker
- Разбит на логические слайсы
- Асинхронные запросы к API через
vuex
- Стейт логина кешируется в
LocalStorage
- Состояние до запроса - выводом полей "нет данных" в блоки
- Состояние ожидания - через попап и спиннер
- Состояние ошибки - через попап с выводом ошибки
-
Адаптивная верстка
320px => 1440px -
Резиновые размеры шрифтов
-
Раскрытие блоков по кнопке
на планшетных и мобильных разрешениях - Состояния
hover
иactive
у UI-компонентов -
Анимации блоков
с изменяющейся шириной (блоки "избранное" и "найденные отели") - Блоки с ограничениями по высоте и
скроллбарами
- clone branch with
git@github.com:proehavshiy/hotel-searcher-app-vue.git
npm run build
- build final versionnpm run serve
- start dev modenpm run lint
- lints and fixes files