Skip to content

2027 redesign: put the conference name, dates and CTAs on the homepage fold - #4800

Draft
marcoacierno wants to merge 1 commit into
mainfrom
claude/issue-4797-20260815-2225
Draft

2027 redesign: put the conference name, dates and CTAs on the homepage fold#4800
marcoacierno wants to merge 1 commit into
mainfrom
claude/issue-4797-20260815-2225

Conversation

@marcoacierno

Copy link
Copy Markdown
Member

What

The homepage hero was a full-viewport illustration with no text at all: the conference name, dates and city only appeared one full scroll below the fold.

This gives the HomepageHero CMS block the copy it was missing and renders it with the copy-left / illustration-right layout interior pages already use.

New fields on the Homepage Hero block

Field Purpose
pretitle When and where, e.g. Bologna, May 27 - 30, 2027
title The conference name as real text, e.g. PyCon Italia 2027
subtitle One line on what kind of event it is
highlight Optional credibility marker, e.g. 1,000+ attendees
primary_cta / secondary_cta The two actions for the current phase (tickets, programme, ...). modal: links are supported like in the other blocks
illustration Optional static styleguide illustration to show instead of the animated city scene

Rendering

  • With copy configured: pretitle / title / subtitle / CTAs / highlight in the left column, illustration on the right, stacking to copy-first on mobile.
  • The animated city illustration is scaled down to fit its column instead of being cropped, so the towers and the snake stay visible.
  • Choosing a static illustration renders instantly, which avoids the 2-3s the animated scene needs.
  • Heroes with no copy configured render exactly as they do today (full-viewport city illustration), so published pages are unaffected until an editor fills the new fields.

Deploying

The frontend fetches the GraphQL schema at build time from the deployed backend, so the backend needs to reach pastaporto-admin.pycon.it before the Frontend Lint codegen step can pass on this branch. The deploy pipeline already deploys the backend before building the frontend on main.

Checks

  • uv run pytest api cms -q -n auto - 596 passed, 7 skipped, 1 xfailed
  • uv run python manage.py makemigrations --check - No changes detected
  • uv tool run ruff@0.12.5 check api/cms cms - All checks passed
  • npx tsc --noEmit (against the locally generated schema) - only the pre-existing file-input error
  • npx @biomejs/biome check . - clean

Part of #4797

Generated with Claude Code

The homepage hero was a full-viewport illustration with no text: a visitor
had to scroll two screens before learning what the event is, when and where
it happens, or how to get a ticket.

Give the HomepageHero block the copy it was missing (pretitle, title,
subtitle, highlight, primary and secondary CTA) and render it with the
copy-left / illustration-right layout interior pages already use. The
illustration can now also be one of the static styleguide illustrations,
which paints immediately instead of taking a couple of seconds like the
animated city scene.

Heroes with no copy configured keep rendering exactly as before, so already
published pages are untouched until they're edited.

Refs #4797

Co-authored-by: Marco Acierno <3382153+marcoacierno@users.noreply.github.com>
@vercel

vercel Bot commented Aug 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pycon Error Error Aug 15, 2026 10:58pm

@claude

claude Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Adds copy/CTA fields to the HomepageHero CMS block and a split copy-left/illustration-right rendering, with a fallback to the old full-viewport layout when no copy is set. Backend and rendering logic look correct, but a couple of minor points:

  • backend/api/cms/page/blocks/homepage_hero.py: the comment says missing fields are filled by Wagtail with "the block default, which is None" — for CharBlocks the default is actually "", not None (only nested StructBlocks like the CTAs resolve to None-ish via the ["label"] check). Doesn't cause a bug since or "" normalizes either way, but the comment is misleading for anyone debugging this later.
  • frontend/.../homepage-hero/index.tsx: hasCopy only checks title || pretitle || subtitle || primaryCta. If an editor sets only highlight and/or secondaryCta (no title/pretitle/subtitle/primaryCta), the component falls back to FullScreenHero and silently drops that copy. Likely a non-issue in practice, but worth confirming that's the intended behavior.

No blocking issues found.

@codecov

codecov Bot commented Aug 15, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.10%. Comparing base (4e02d41) to head (5e04a3b).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4800      +/-   ##
==========================================
+ Coverage   93.08%   93.10%   +0.02%     
==========================================
  Files         360      360              
  Lines       11202    11221      +19     
  Branches      902      902              
==========================================
+ Hits        10427    10447      +20     
+ Misses        663      662       -1     
  Partials      112      112              
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant