ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
Макет
2
Booksy (односторінковий сайт)
3
БАЗОВА ВЕРСІЯ (MVP - minimum viable product)
4
Базові задачі
5
Верстка адаптивна, окрім мобільних пристроїв. Точки перелому:
- mobile: верстка гумова від 320px, стає адаптивною з 375px;
- tablet: з 768px;
- desktop: з 1440px
При написанні стилів використаний Mobile First підхід і медіа-функція min-width.
6
Верстка валідна (https://validator.w3.org/ , https://jigsaw.w3.org/css-validator/ )
7
Забезпечити дотримання семантики відповідно до стандартів HTML5
8
Код написаний з дотриманням настанови
9
Підключений нормалізатор стилів modern-normalize
10
Вихідний код відформатований за допомогою Prettier
11
Здійснити підключення шрифтів
12
Забезпечити оптимізацію розмірів векторної та растрової графіки
13
Забезпечити підтримку відображення картинок для retina-екранів. Всі фонові і контентні растрові зображення — респонсивні і підтримують екрани щільністю x1 и x2.
14
Оптимізувати завантаження зображень
15
Всі svg-іконки підключити через sprite
16
Додати відображення фавікон сторінки (знаходиться в UI KIT)
17
Всім інтерактивним елементам (кнопки, посилання тощо) слід додати hover-ефект згідно макету (відповідно до UI Kit).
Для ефекту hover клікабельним елементам потрібно додати зміну курсору.
18
Анімації не є обовʼязковими, але їх використання може зробити взаємодію з вебсайтом більш приємною та інтуїтивно зрозумілою для користувача
19
Посилання на документацію API https://books-backend.p.goit.global/api-docs/
20
Перелік категорій книгhttps://books-backend.p.goit.global/books/category-list пагінація кастомна
21
Популярні книги, що належать до усіх категорійhttps://books-backend.p.goit.global/books/top-books
22
Книги окремої категоріїhttps://books-backend.p.goit.global/books/category?category=selectedCategory
23
Детальна інформація про книгуhttps://books-backend.p.goit.global/books/ bookId
24
Структура проєкту
25
- Header
- Hero
- Books
- Feedbacks
- Events
- Article
- Location
- Footer
- Modal window
26
HeaderКравець Дмитро. dima2.kravets@gmail.com
27
В Header-і знаходиться logo і навігація по сайту.tasks: markup header,
28
Logo слід реалізувати у форматі svg.JS:mobile menu/window
29
Для мобільних пристроїв навігація по сайту має бути розміщена в меню, взаємодія з яким має бути реалізована за допомогою JS.

По clickу на кнопку-іконку з бургер-меню, меню має плавно зʼявитися і заповнити всю ширину та висоту в'юпорту пристрою користувача.
Поки відкрито бургер-меню сторінка під ним не повинна скролитись.
У разі clickу по елементу навігації, користувача слід перенаправити до відповідної секції сайту і закрити меню.
Меню також можна закрити по clickу на кнопку-іконку закриття.
files:
header.js
header.html
30
Навігація по сайту має бути реалізована якірними посиланнями, які ведуть до відповідних секцій сайту з застосуванням повільного скролу.
31
HeroОксана Семенчук - oksana.kostenko3000@gmail.com
32
Текст “Discover Your Next Great Read Today!” є головним заголовком сайтуtasks: markup hero,
33
Посилання "Shop Now!" має перенаправляти користувача до секції "Books" JS: slider
34
Секція також містить слайдер (https://swiperjs.com/swiper-api), який має бути реалізований як список елементів за допомогою <ul>. Користувач повинен мати змогу взаємодіяти зі слайдером через кнопки (стрілочки вліво та вправо). У разі досягнення кінця списку елементів, кнопка відповідно до вказаного напрямку повинна бути задізейблена (користувач більше не може взаємодіяти з нею, і вона не реагує на події clickу або натискання клавіші). Задізейблена кнопка візуальною змінюється, що підкреслює її неактивний стан (стилі взяти з UI Elements на макеті). hero.html
hero.js
35
Зображення у слайдері слід реалізувати як контентні та взяті з макету, можна додати ще свої.
36
BooksDanylo Borovskyi, danilborovskii199911@gmail.com
37
У секції немає видимого заголовку. Потрібно зробити прихований заголовок “Trending books”.
38
Текст “Books” є підзаголовком секції.
39
Праворуч від підзаголовку секції розміщена інформація про кількість відображених книг у списку із загальну кількості, наприклад "Showing 32 of 100"tasks:markup books,visuallly-hiden,
40
Під підзаголовком секції має бути блок з фільтрацією у вигляді списку <ul>.
Категорії фільтратції потрібно глянути з отриманої відповіді з бекенду.
JS: fitered, book modal
41
Праворуч від блоку фільтрації відображений перелік доступних книг до продажу, який слід реалізувати за допомогою <ul>.
Кожен елемент списку містить зображення книги, назву як заголовок, автора та ціну, кнопку "Learn More".
Інформація про книги з'являється по запиту на бекенд.
В десктопній весії список має складатися з 24 книг, а в мобільній версії - з 10-ти.
Клік по кнопці відкриває модальне вікно "Book Modal".
files:
books.html
books.js
42
Зображення потрібно реалізувати як контенті.
43
Під списком потрібно реалізувати пагінацію.
Кожен раз по clickу на кнопку "Show More" типу "button" має додатково підвантажуватись ще 4 книги (посилання на документацію API знаходиться вище в ТЗ) до тих пір, поки не вичерпається їх перелік. В такому разі кнопка "Show More" має бути прихована.
44
FeedbacksAnastasiia Sukhai, asyasyka@gmail.com
45
Текст “Customer Feedbacks" є заголовком секції.
46
Перелік відгуків необхідно реалізувати за допомогою <ul> у вигляді горизонтального слайдера (https://swiperjs.com/swiper-api).
Користувач повинен мати змогу взаємодіяти зі слайдером через мишу, клавіатуру (клавіш Tab та стрілок) або сенсорний екран.
У разі досягнення кінця списку елементів, кнопка відповідно до вказаного напрямку повинна бути задізейблена (користувач більше не може взаємодіяти з нею, і вона не реагує на події clickу або натискання клавіші).
Задізейблена кнопка візуальною змінюється, що підкреслює її неактивний стан.
Текст відгуків взяти з макету, або довільний.
tasks: markup feedbacks, JS:slider

files:
feedback.html
feedback.js
47
EventsАнна Ярмоленко anna8879ns@gmail.com
48
Текст “Upcoming Events at Booksy" є заголовком секції.tasks: markup events,
49
Перелік популярних івентів необхідно реалізувати за допомогою <ul> як список елементів-подій.
Кожна з статей складається з контентного зображення, заголовку, формату і дати, опису та кнопки "Register".
Кнопка "Register" відкриває модальне вікно реєстрації на захід.
JS:modal window
files:
events.html
events.js
50
Article(dmd) dmode90@gmail.com
51
Текст “Welcome to Booksy – your cozy corner for handpicked reads” є заголовком секції.Files:article.html JS:products-api.js
52
Секція також містить зображення, яке слід реалізувати як контенте, та описову частину. JS: запити до api, localStorage
53
LocationСофия Курилова sofia.velikaua@gmail.com
54
Текст “How to find us” є заголовком секції.
55
У секції знаходиться перелік контактів компанії, який необхідно реалізувати як список елементів за допомогою <ul> (пошти, телефону та адреси книгарні).
56
Іконки з контактами/адресою потрібно реалізувати у форматі svg. (Див.рядок 15)
57
Пошта та телефон повинні мати спеціальні href і бути клікабельними.
58
Під списком необхідно підключити карту google-maps через iframe.
Для цього заходимо до карти goolge maps, обираємо потрібну адресу на карті, далі ліворуч тиснемо на кнопку "Поділитися", обираємо вкладку "Вставити карту" та тиснемо "Скопіювати HTML-код". Адресу потрібно обрати 123 Books St, Sydney NSW 2000 AU.
Інструкція додавання коду карти до проєкту.
Tasks: markup location, iframe
59
FooterMilena Kachko kachkomilena@gmail.com
60
В Footer-і знаходиться лого, перелік якірних посилань по сайту, форма та напис: "© 2025 Booksy. All rights reserved."
61
Logo слід реалізувати у форматі svg.
62
Перелік якірних посилань, які ведуть до відповідних секцій сайту, мають бути реалізовано як список елементів за допомогою <ul>.Tasks: markup footer JS: form
63
Секція також містить форму, що включає обовʼязкові до заповнення елементи <input> та кнопку “Sign Up" типу submit. Полю для введення електронної пошти слід додати мінімальну валідацію введених даних за допомогою атрибуту pattern="^\w+(\.\w+)?@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$". Files:
footer.html
footer.js
64
Book Modaldmd: modal-books.html markup

тімліду: запитай ментора що робити з виділеним червоним, бо таких даних апі не видає, я зараз створив тестовий обєкт якийм заміняю відсутні дані, і з нього підтягую "Details", "Shipping" та "Returns"...
65
Модальне вікно складається з інформації про книгу, по якій відбувся клік в секції “Books” на кнопку "Learn More" - фото, назви, автора, ціни, форми для вибору кількості та інформації про дану книгу - Details, Shipping, Returns.
66
Текст “I will find you" є назвою книги (заголовок), назва має підтягуватись динамічно.
67
Форма містить поля для збільшення та зменшення кількості книг до замовлення, а також кнопки "Add To Cart", яка надсилає обрану кількість книг з типом button та кнопку "Buy Now" з типом submit.
При кліку на кнопку "Add To Cart" інформація про кількість обраних книг має бути виведена у консоль, або довільним повідомленням на сторінці.
При кліку на кнопку "Buy Now" потрібно вивести повідомлення "Дякуємо за покупку".
68
Деталі про книгу варто реалізувати через бібліотеку Accordeon, які містять три пункти "Details", "Shipping" та "Returns", інформація має підтягуватись динамічно.
69
Модальне вікно також містить кнопку-іконку закриття, яку слід реалізувати як svg.
70
Модальне вікно повинно закриватись по clickу на кнопку-іконку закриття, по clickу на backdrop, а також натисканню на клавішу Escape.
71
Сторінка під модальним вікном не повинна скролитись.
72
Contact Modaldmd: modal-contacts.html markup
73
Текст “Register" є заголовком модального вікна.
74
У модальному вікні треба створити форму з полями для імені, пошти та повідомлення, кнопкою "Register" з типом submit.
Поля Name* та Email* є обовʼязковими.
на якомусь з занять в нас це було.
за допомогою JS робимо перевірку і в JS фарбуємо border і color в червоний
75
Модальне вікно також містить назву події, на яку відбувається реєстрація та кнопку-іконку закриття.dmd: така вимога є в ТЗ MVP чи у додаткових завданнях? Пропоную тим, чого немає в ТЗ зайнятись лише після того як буде готове MVP та додаткові завдання.
76
Модальне вікно повинно закриватись по clickу на кнопку-іконку закриття, по clickу на backdrop, а також натисканню на клавішу Escape.
77
Сторінка під модальним вікном не повинна скролитись.
78
ДОДАТКОВІ ЗАВДАННЯ (необовʼязкові)
79
можуть реалізовуватися командою лише за наявності реалізованого MVP.
80
Loader
81
Підключити/зверстати Loader (spinner) для асинхронних запитівOleksandr Rachok "rachok010291@gmail.com"
82
Scroll up
83
Реалізувати кнопку, по clickу на яку користувач повертатиметься на початок сайту ("Arrows" в UI Elements)
84
Pagination
85
Пагінацію потрібно реалізувати на клієнті, віддаючи колекцію Shopping list, яка зберігається в localStorage, відповідними порціями на сторінку Shopping list
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100