Статичний сайт Чернівецького ліцею іноземних мов, комп’ютерних наук та
інформаційних технологій (lyceum.cpbi.info). Згенерований зі статичних
HTML-сторінок, з навігацією на htmx та адаптивним (мобільним) макетом.
build.pyбере вміст наявних HTML-сторінок, обгортає його в спільний Jinja2-шаблон (templates/base.html) з SEO/Open Graph, htmx та мобільним меню, переписує посилання на чисті відносні URL і збираєdist/.- Для кожної сторінки створюються два файли:
dist/<slug>/index.html— повна сторінка (прямий вхід, SEO, fallback без JS);dist/<slug>/fragment.html— htmx-фрагмент (лише вміст), який підвантажується черезhx-getбез перезавантаження сторінки (hx-push-urlоновлює URL).
- Внутрішні посилання мають і звичайний
href, і htmx-атрибути — тож сайт працює і без JavaScript (звичайний перехід), і з htmx (SPA-навігація). - GitHub Actions (
.github/workflows/pages.yml) збирає й публікуєdist/на Pages. Текуdist/не комітять.
pip install -r requirements.txt
python build.py # -> dist/
python verify.py # перевірка
python serve_test.py # локальний HTTP-тест
build.py генератор (витягує вміст, htmx-навігація, SEO, OG)
config.py домен, SEO, соцмережі
seo.py / slugs.py / og_image.py SEO-голова, слаги, OG-зображення
templates/base.html спільний макет (head, мобільне меню, htmx)
templates/fragment.html htmx-фрагмент
assets/media/ site.css, site.js, зображення, PDF
assets/fonts/ шрифт для OG-зображень
.github/workflows/ CI: збірка + публікація на Pages
- Коректний
viewport(масштабування дозволене — прибраноuser-scalable=no). - Липке верхнє меню; на вузьких екранах — кнопка-гамбургер (
site.js). site.cssзмушує фіксовані ширини конструктора переноситись на телефонах, зображення —max-width:100%.
Сторінка «Вступ» (/enrolling/) містить вбудовану форму Tally.so.
Замініть TALLY_ENROLL_ID у build.py на ID вашої форми й перезберіть.
Динамічну галерею (яка тягла фото з LightUp) замінено на статичну сітку
зображень із assets/media/images/.