ЗВІТИ З ЛАБОРАТОРНИХ РОБІТ

з дисципліни «WEB-ОРІЄНТОВАНІ ТЕХНОЛОГІЇ. BACKEND РОЗРОБКИ»
Виконавець: Студент групи ІA-34 — Вінницький Герман Романович
Фото: Вінницький Герман Романович

Тема, Мета, Місце розташування

Тема: Адаптивний веб-застосунок ресторану швидкого харчування MacShnaknels

Мета: У межах проєкту було спроєктовано та розроблено адаптивний веб-застосунок MacShnaknels, призначений для представлення меню закладу швидкого харчування, перегляду популярних позицій, забезпечення взаємодії користувача з інтерфейсом, вибору товарів і формування замовлення через зручний та інтуїтивно зрозумілий інтерфейс.

Місце розташування:


Опис предметного середовища

Веб-застосунок MacShnaknels є сайтом ресторану швидкого харчування, який надає користувачам можливість переглядати асортимент страв, ознайомлюватися з акційними пропозиціями, обирати товари за категоріями та додавати їх до кошика. Основне призначення системи полягає у створенні зручного цифрового середовища для представлення продукції закладу та спрощення взаємодії клієнта з меню.


Структура веб-застосунку

Головна сторінка містить шапку (header) з логотипом і навігаційним меню, головний банер із коротким представленням бренду, основний блок (main) із картками популярних товарів, секцію з категоріями меню, блок акційних пропозицій, а також кошик для вибраних позицій. У нижній частині сторінки розташовано футер (footer) із контактною та довідковою інформацією.

Навігація забезпечує швидкий перехід до основних розділів сайту. Інтерфейс адаптується під різні розміри екрана, а на мобільних пристроях меню трансформується у компактний формат бургер-меню.


Сценарій взаємодії (бізнес-логіка)

Користувач відкриває сайт і потрапляє на головну сторінку веб-застосунку MacShnaknels, де бачить основну інформацію про заклад, меню та популярні позиції. Далі користувач переглядає картки страв, ознайомлюється з назвами, описом і цінами товарів, після чого може обрати потрібну позицію. При натисканні кнопки додавання товар потрапляє до кошика, де користувач може переглянути вибрані елементи та загальну суму замовлення. Система забезпечує зручну взаємодію з контентом, швидке перемикання між секціями та наочне відображення основної інформації про продукцію ресторану.


Вимоги

Функціональні вимоги:

наявність зручної навігації між основними розділами сайту; відображення карток товарів із назвою, описом, ціною та кнопкою додавання; можливість перегляду меню за категоріями; можливість додавання товарів до кошика; автоматичне оновлення вмісту кошика після вибору товарів; відображення акційних або популярних пропозицій на головній сторінці; адаптивне бургер-меню для мобільних пристроїв.

Нефункціональні вимоги:

адаптивність інтерфейсу для десктопів, планшетів і смартфонів; швидке завантаження сторінки та коректна робота інтерфейсу; зручність користування та зрозуміла структура розміщення контенту; кросбраузерність у сучасних браузерах; логічна організація файлової структури проєкту; використання сучасних стилістичних рішень, анімацій і ефектів для покращення взаємодії з користувачем.

Стек технологій

HTML5 — для створення семантичної структури сторінок. CSS3 — для стилізації інтерфейсу, побудови адаптивної сітки, використання media queries та візуальних ефектів. JavaScript (Vanilla JS) — для реалізації інтерактивності, роботи бургер-меню, динамічного додавання товарів у кошик та оновлення вмісту сторінки. Git + GitHub — для контролю версій, збереження історії змін та розміщення проєкту в репозиторії.

Діаграми

UML Use-case діаграма

Скрін 1

ER-діаграма

Скрін 1

Структура документа

Нижче наведено узагальнену структуру HTML-документа головної сторінки проєкту MacShnaknels. Вона містить основні структурні блоки: header із логотипом та меню навігації, main із банером, секцією товарів, акціями та кошиком, а також footer із контактною інформацією.

1. Структура сторінки index.html (Головна)

<!DOCTYPE html>
<html lang="uk">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>MacShnaknels</title>
  <meta name="description" content="Адаптивний вебзастосунок ресторану швидкого харчування MacShnaknels" />
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&display=swap" rel="stylesheet">
  <link rel="stylesheet" href="css/style.css" />
</head>
<body>
  <header class="header" id="top">
    <div class="container header__wrapper">
      <a href="#top" class="logo">Mac<span>Shnaknels</span></a>

      <button class="burger" id="burger" aria-label="Відкрити меню" aria-expanded="false">
        <span></span>
        <span></span>
        <span></span>
      </button>

      <nav class="nav" id="nav">
        <a href="#hero">Головна</a>
        <a href="#menu">Меню</a>
        <a href="#offers">Акції</a>
        <a href="#about">Про нас</a>
        <a href="#contacts">Контакти</a>
      </nav>

      <button class="cart-button" id="openCart" aria-label="Відкрити кошик">
        Кошик <span id="cartCount">0</span>
      </button>
    </div>
  </header>

  <main>
    <section class="hero" id="hero">
      <div class="container hero__wrapper">
        <div class="hero__content reveal">
          <p class="hero__label">Швидко, смачно, зручно</p>
          <h1>Адаптивний сайт ресторану <span>MacShnaknels</span></h1>
          <p class="hero__text">
            Обирай улюблені бургери, напої та десерти, додавай до кошика й оформлюй замовлення
            в кілька кліків.
          </p>
          <div class="hero__actions">
            <a href="#menu" class="btn btn--primary">Переглянути меню</a>
            <a href="#offers" class="btn btn--secondary">Наші акції</a>
          </div>
        </div>

        <div class="hero__visual reveal">
          <div class="hero-card hero-card--big">
            <img src="assets/images/hero-burger.jpg" alt="Головний бургер" />
          </div>
          <div class="hero-card hero-card--small">
            <img src="assets/images/hero-drink.jpg" alt="Напій" />
          </div>
        </div>
      </div>
    </section>

    <section class="features">
      <div class="container features__grid">
        <article class="feature reveal">
          <h3>Свіжі інгредієнти</h3>
          <p>Ми готуємо страви з якісних продуктів та дбаємо про смак кожної позиції.</p>
        </article>
        <article class="feature reveal">
          <h3>Швидке замовлення</h3>
          <p>Користувач може обрати товар, змінити кількість і одразу побачити суму покупки.</p>
        </article>
        <article class="feature reveal">
          <h3>Адаптивний інтерфейс</h3>
          <p>Сайт зручно працює на комп’ютері, планшеті та смартфоні завдяки гнучкій верстці.</p>
        </article>
      </div>
    </section>

    <section class="menu section" id="menu">
      <div class="container">
        <div class="section-head reveal">
          <p class="section-head__label">Меню</p>
          <h2>Популярні позиції</h2>
          <p>Оберіть категорію та додайте страви до кошика.</p>
        </div>

        <div class="filters reveal" id="filters">
          <button class="filter-btn active" data-category="all">Усе</button>
          <button class="filter-btn" data-category="burger">Бургери</button>
          <button class="filter-btn" data-category="drink">Напої</button>
          <button class="filter-btn" data-category="dessert">Десерти</button>
        </div>

        <div class="menu-grid" id="menuGrid"></div>
      </div>
    </section>

    <section class="offers section" id="offers">
      <div class="container offers__grid">
        <article class="offer-card reveal">
          <div>
            <p class="offer-card__label">Акція тижня</p>
            <h3>Комбо 2+1</h3>
            <p>Замовляй два бургери та отримуй напій у подарунок.</p>
          </div>
          <a href="#menu" class="btn btn--primary">Обрати комбо</a>
        </article>

        <article class="offer-card offer-card--dark reveal">
          <div>
            <p class="offer-card__label">Новинка</p>
            <h3>Сезонний бургер</h3>
            <p>Соковита котлета, фірмовий соус і хрусткі овочі в новому поєднанні смаків.</p>
          </div>
          <a href="#menu" class="btn btn--secondary btn--light">Дивитися меню</a>
        </article>
      </div>
    </section>

    <section class="about section" id="about">
      <div class="container about__grid">
        <div class="about__image reveal">
          <img src="assets/images/Снимок экрана 2026-03-17 235417.png" alt="Інтер'єр ресторану" />
        </div>
        <div class="about__content reveal">
          <p class="section-head__label">Про нас</p>
          <h2>MacShnaknels — сучасний фастфуд онлайн</h2>
          <p>
            Сайт створено для зручного перегляду меню, вибору страв та імітації процесу оформлення
            замовлення. Інтерфейс поєднує зручну навігацію, адаптивність і візуально привабливий дизайн.
          </p>
          <ul class="about__list">
            <li>зручна навігація між розділами</li>
            <li>адаптивна сітка карток</li>
            <li>інтерактивний кошик на JavaScript</li>
            <li>плавні анімації та hover-ефекти</li>
          </ul>
        </div>
      </div>
    </section>
  </main>

  <footer class="footer" id="contacts">
    <div class="container footer__wrapper">
      <div>
        <a href="#top" class="logo logo--footer">Mac<span>Shnaknels</span></a>
        <p class="footer__text">Адаптивний навчальний вебзастосунок ресторану швидкого харчування.</p>
      </div>

      <div class="footer__contacts">
        <h3>Контакти</h3>
        <p>м. Київ, вул. Смачна, 12</p>
        <p>+380 (99) 123-45-67</p>
        <p>macshnaknels@example.com</p>
      </div>

      <div class="footer__contacts">
        <h3>Графік роботи</h3>
        <p>Пн–Пт: 08:00–22:00</p>
        <p>Сб–Нд: 09:00–23:00</p>
      </div>
    </div>
  </footer>

  <aside class="cart" id="cart">
    <div class="cart__overlay" id="cartOverlay"></div>
    <div class="cart__panel">
      <div class="cart__header">
        <h2>Ваш кошик</h2>
        <button id="closeCart" class="cart__close" aria-label="Закрити кошик">×</button>
      </div>

      <div class="cart__items" id="cartItems">
        <p class="cart__empty">Кошик порожній</p>
      </div>

      <div class="cart__footer">
        <div class="cart__summary">
          <span>Сума:</span>
          <strong id="cartTotal">0</strong>
        </div>
        <button class="btn btn--primary btn--full" id="checkoutBtn">Оформити замовлення</button>
      </div>
    </div>
  </aside>

  <div class="toast" id="toast">Товар додано до кошика</div>

  <script src="js/script.js"></script>
</body>
</html>

Скріншоти

Скрін 1

Скрін 2

Висновки

У результаті виконання лабораторної роботи було спроєктовано структуру предметної області та розроблено адаптивний веб-застосунок MacShnaknels. У межах роботи було визначено бізнес-логіку системи, сформовано функціональні та нефункціональні вимоги, описано структуру інтерфейсу та технології реалізації. Створений веб-застосунок забезпечує зручне представлення меню ресторану швидкого харчування, підтримує взаємодію користувача з товарами та відповідає основним вимогам до сучасного адаптивного інтерфейсу.