Hugo static site for solrtraining.com — Cominvent's Apache Solr
training business (live online instructor-led classes + self-paced online courses on
lms.solrtraining.com). Apex domain is canonical; www redirects to it.
Self-contained: custom layouts in layouts/, no external theme.
- Hugo extended (
hugo versionshould print+extended). On macOS:brew install hugo.
hugo server -D # live-reload preview at http://localhost:1313hugo --gc --minify # baseURL (https://solrtraining.com/) comes from hugo.tomlOutputs the finished site to public/ (gitignored).
content/_index.md Instructor bio (rendered into the Instructor section)
data/*.yaml slides (hero carousel), curriculum, testimonials
layouts/ Self-contained templates (baseof + index single-page)
assets/css/ style.css — fingerprinted at build time (cache-busting)
static/img/ solrtraining-logo.svg + favicon.svg; jan-hoydahl.jpg; slides/ (carousel images)
contact-worker/ Cloudflare Worker: contact form -> Brevo (deploys separately)
hugo.toml Site config (baseURL, menu, params: lms/linkedin/contact_endpoint)
.htmltest.yml Link/image lint (IgnoreAltEmpty for decorative images)
.github/workflows/ CI: build + htmltest on PR; build + deploy on push to main
.github/workflows/deploy.yml: PR → build + htmltest;
push/merge to main → build + rsync public/ to the CloudPanel site over SSH.
Deploy target via env (DEPLOY_HOST/DEPLOY_USER/DEPLOY_PATH); SSH deploy-key
private half in repo secret SOLRTRAINING_DEPLOY_KEY, public half on the host's
solrtraining site user. Currently deploys to the staging path
htdocs/new.solrtraining.com/ until the task-22 cutover.
contact-worker/ is a Cloudflare Worker at contact.solrtraining.com that forwards the
form to the Brevo transactional API (DigitalOcean blocks SMTP). Deploy with
cd contact-worker && npx wrangler deploy; set the API key with
npx wrangler secret put BREVO_API_KEY.