Guidance for AI assistants working in this repository.
A Jekyll static site for OD Videos — the videography business of Ondřej
Demuth (realitní / letecká / firemní / svatební video). The site is in
Czech (lang: cs-CZ); all user-facing copy, section names, and form fields
should stay in Czech. It is deployed to GitHub Pages at the custom domain
odvideos.cz (CNAME).
There is no build tool / no npm — styling is Tailwind CSS via the CDN
(<script src="https://cdn.tailwindcss.com"> in _includes/head.html), so
utility classes work directly in markup with no compile step.
bundle install # first time only
bundle exec jekyll serve --livereload --host 0.0.0.0 --baseurl "" --force_polling
Serves on http://localhost:4000 with livereload on 35729 (both forwarded by
.devcontainer/devcontainer.json, image mcr.microsoft.com/devcontainers/jekyll:2).
_config.yml is not hot-reloaded — restart Jekyll after editing it.
_config.yml Site config, SEO defaults, plugins, google_script_url
_layouts/
default.html Full layout: nav + content + footer + main.js
minimal.html Stripped layout: logo + "back home" + theme toggle (subpages)
_includes/
head.html <head>: theme pre-paint, fonts, Tailwind config, SEO, analytics
nav.html Fixed top nav (used by default layout)
footer.html Footer with contact + legal (OSVČ) details
social-meta.html og:description / twitter:description (before <!-- Begin Jekyll SEO tag v2.8.0 -->
<title>CLAUDE.md | OD Videos</title>
<meta name="generator" content="Jekyll v3.10.0" />
<meta property="og:title" content="CLAUDE.md" />
<meta name="author" content="Ondřej Demuth" />
<meta property="og:locale" content="cs_CZ" />
<meta name="description" content="Tvoříme realitní i firemní videa, reklamy, obsah na sociální sítě i svatební filmy. Vaši představu natočíme a profesionálně zpracujeme do finální podoby." />
<meta property="og:description" content="Tvoříme realitní i firemní videa, reklamy, obsah na sociální sítě i svatební filmy. Vaši představu natočíme a profesionálně zpracujeme do finální podoby." />
<link rel="canonical" href="https://odvideos.cz/CLAUDE/" />
<meta property="og:url" content="https://odvideos.cz/CLAUDE/" />
<meta property="og:site_name" content="OD Videos" />
<meta property="og:image" content="https://odvideos.cz/assets/images/og-image.jpg" />
<meta property="og:image:height" content="630" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:alt" content="OD Videos — realitní a letecká videotvorba" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:image" content="https://odvideos.cz/assets/images/og-image.jpg" />
<meta name="twitter:image:alt" content="OD Videos — realitní a letecká videotvorba" />
<meta property="twitter:title" content="CLAUDE.md" />
<meta name="twitter:site" content="@" />
<meta name="twitter:creator" content="@Ondřej Demuth" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","author":{"@type":"Person","name":"Ondřej Demuth"},"description":"Tvoříme realitní i firemní videa, reklamy, obsah na sociální sítě i svatební filmy. Vaši představu natočíme a profesionálně zpracujeme do finální podoby.","headline":"CLAUDE.md","image":{"width":1200,"height":630,"alt":"OD Videos — realitní a letecká videotvorba","url":"https://odvideos.cz/assets/images/og-image.jpg","@type":"imageObject"},"publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://odvideos.cz/assets/images/logo/logo-color.png"},"name":"Ondřej Demuth"},"url":"https://odvideos.cz/CLAUDE/"}</script>
<!-- End Jekyll SEO tag -->
)
structured-data.html JSON-LD ProfessionalService schema
pages/ Actual site pages (each sets its own `permalink`)
index.html Home (/) — hero, about, services, contact form, gallery
cenik.html Price calculator (/cenik)
gallery.html Gallery (/galerie) ⚠ still placeholder content
recenze.html Review form (/recenze) → Google Apps Script
dekujeme.html Thank-you page (/dekujeme) — contact-form success target
privacy-policy.html Privacy policy (/ochrana-soukromi)
404.html Not-found page (/404)
assets/
css/main.css The stylesheet in use (theme tokens + animations)
js/main.js The script in use (menu, theme, analytics, forms)
images/ Logos, client logos (assets/images/clients/), og-image, portrait
videos/ Hero background videos
google-apps-script/ Code.gs + README for the /recenze → Google Sheets backend
_drafts/ Jekyll drafts (not published)
pages/ and each declares an explicit permalink
(e.g. /cenik, /galerie). permalink: pretty is the site default.layout: default for the home page (full nav + footer); use
layout: minimal for standalone subpages (ceník, galerie, recenze, etc.).noindex: true and
sitemap: false in front matter (recenze, dekujeme, privacy, 404)..dark class to <html>.assets/css/main.css
(--bg, --surface, --fg, --muted, --line, --brand), exposed to
Tailwind as tokens (bg-base, text-fg, text-muted, bg-surface,
text-brand, …) via the tailwind.config block in _includes/head.html.
Prefer these tokens over hard-coded colors so both themes stay correct.head.html (stored choice → OS preference → dark fallback); the toggle in
assets/js/main.js persists the choice to localStorage.block dark:hidden / hidden dark:block
(color logo for light, white logo for dark).jekyll-seo-tag and jekyll-sitemap.head.html owns <title>, og:title, twitter:title (home → OD Videos;
others → OD Videos | <page title>) and calls `` to
avoid duplicate tags. Don’t add a competing <title>.
description; social-share
blurb uses og_description (falls back to description → site.description)._includes/structured-data.html (JSON-LD) if business details,
services, or contact info change.head.html. Don’t add an @import in CSS (render-blocking).assets/js/main.js)IntersectionObserver fade-ins (.opacity-fade → .visible).odvideos.goatcounter.com). Custom
events are fired via the track() helper (phone/email/Instagram/contact
clicks, section-depth, form submit). It no-ops when GoatCounter is absent
(local dev), so never let analytics throw into the page.#contact): posts to formsubmit.co via AJAX;
on success redirects to /dekujeme./recenze): posts to a Google Apps Script Web App. The
endpoint is site.google_script_url in _config.yml; the backend lives in
google-apps-script/ (see its README.md, in Czech). It uses
mode: "no-cors", so the browser can’t read the response — server-side errors
can’t be distinguished from success, so verify real submissions land in the
sheet after any Code.gs change (and redeploy a new version).These are leftovers from the original template the site was forked from — do not treat them as the source of truth for how the site works:
pages/gallery.html and _drafts/gallery-detail.html still contain
English placeholder gallery items and images that don’t exist
(/assets/images/gallery-*.jpg). The dead /gallery-detail.html links were
removed (the items are now non-clickable containers), but the content itself
is still placeholder. TODO.md reads “Gallery” — this section is unfinished.pages/404.html is the sole 404 page (Czech, noindexed). The old root
404.html template duplicate was deleted; don’t reintroduce a competing
permalink: /404.README.md is now current — it accurately describes the OD Videos Jekyll site
(tech stack, structure, local dev), so it can be trusted as a companion to this
file.
main).