Техническое задание на создание сайта для фитнес-студии

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

Основные функциональные блоки сайта

  • Блок онлайн-записи: Форма для записи клиентов на занятия с возможностью выбора даты, времени и услуги. Данные из формы должны сохраняться в удобном для администратора виде.
  • Форма сбора контактов: Отдельный инструмент (форма подписки, кнопка обратного звонка) для сбора контактов потенциальных клиентов.
  • Динамическое расписание: Раздел с актуальным расписанием занятий, которое администратор сайта может легко изменять и обновлять самостоятельно через админ-панель конструктора.
  • Информационные блоки: Необходимо реализовать следующие разделы:
    • О студии
    • О тренерах (с фотографиями и описанием)
    • Отзывы клиентов
    • Прайс-лист на услуги

Требования к дизайну и реализации

  • Визуальное оформление, структура и общее впечатление от сайта должны соответствовать примеру, предоставленному заказчиком.
  • Сайт должен быть адаптирован для корректного отображения на компьютерах и мобильных устройствах.
  • Все формы должны работать корректно, данные должны поступать в указанные заказчиком каналы (email, мессенджеры, CRM).

Парсинг заголовков сайтов из списка URL

Требуется автоматизировать сбор HTML-тегов с 800 веб-сайтов. Исходные ссылки находятся в таблице, результат нужно вывести в соседнюю колонку.</p> </div> </article> <article class="card"> <div class="card-body"> <div class="meta"> <span><a href="/categories/administrirovanie-24">администрирование</a></span> </div> <h3> <a href="/offers/nastroyka-monitoringa-windows-server-v-scom-s-uvedomleniyami-24509">Настройка мониторинга Windows Server в SCOM с уведомлениями</a></h3> <p>Требуется развернуть тестовый стенд System Center Operations Manager 2025 и создать три правила мониторинга для Windows Server с отправкой email-оповещений. Необходима подробная инструкция со скриншотами.</p> </div> </article> <article class="card"> <div class="card-body"> <div class="meta"> <span><a href="/categories/1s-32">1С</a></span> </div> <h3> <a href="/offers/nastroyka-obmena-dannymi-mezhdu-1s-buhgalteriey-i-1s-zup-42136">Настройка обмена данными между 1С Бухгалтерией и 1С ЗУП</a></h3> <p>Требуется настроить двустороннюю синхронизацию данных между конфигурациями 1С: Бухгалтерия предприятия и 1С: Зарплата и управление персоналом (ЗУП). Буду предоставлен удалённый доступ к рабочему компьютеру с установленным сервером 1С.</p> </div> </article> </div> </div> </main> <!-- Footer --> <footer id="contacts"> <div class="container" style="display:grid; gap:14px"> <div style="display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap"> <div class="ft-row"> <div class="logo" style="margin-bottom:8px"> <div class="logo-badge">F</div> <span>flaks.pro</span> </div> </div> <div class="nav" style="display:flex; gap:14px; flex-wrap:wrap"> <a onclick="gogogo('/')" href="#">Главная</a> <a onclick="gogogo('/blogs')" href="#">Блог</a> <a onclick="gogogo('/auth')" href="#">Войти</a> </div> </div> <div class="ft-row right-float"> <small> <a onclick="gogogo('/agreements/soglasie-na-obrabotku-personalnyh-dannyh')" href="#">Согласие на обработку персональных данных</a></small> <small> <a onclick="gogogo('/agreements/polzovatelskoe-soglashenie')" href="#">Пользовательское соглашение</a></small> <small> <a onclick="gogogo('/agreements/politika-konfidentsialnosti')" href="#">Политика конфиденциальности</a></small> </div> <div class="ft-row"> <small>© <span id="year">2025</span> flaks. Все права защищены.</small> <small>Поддержка: <a href="mailto:support@flaks.pro">support@flaks.pro</a></small> </div> </div> </footer> <!-- Yandex.Metrika counter --> <script type="text/javascript"> (function(m,e,t,r,i,k,a){ m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a) })(window, document,'script','https://mc.yandex.ru/metrika/tag.js?id=105693587', 'ym'); ym(105693587, 'init', {ssr:true, webvisor:true, clickmap:true, ecommerce:"dataLayer", accurateTrackBounce:true, trackLinks:true}); </script> <noscript><div><img src="https://mc.yandex.ru/watch/105693587" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> </body> </html>