Skip to content

homepage: serve / from Nuxt - #5792

Merged
Yndira-E merged 2 commits into
mainfrom
nuxt/homepage
Sep 14, 2026
Merged

Yndira-E merged 2 commits into
mainfrom
nuxt/homepage

Conversation

@dimitrieh

Copy link
Copy Markdown
Contributor

Description

Moves the homepage to Nuxt. The cross-fading hero, the social proof marquee, the testimonial carousel and the FAQ become components.

The hero's second button keeps its white treatment, so it stays legible against the hero image.

Related Issue(s)

Part of #5777

Checklist

  • I have read the contribution guidelines
  • I have considered the performance impact of these changes
  • Suitable unit/system level tests have been added and they pass
  • Documentation has been updated
  • For blog PRs, an Art Request has been created (instructions)

@netlify

netlify Bot commented Sep 11, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for flowforge-website ready!

Name Link
🔨 Latest commit 7499900
🔍 Latest deploy log https://app.netlify.com/projects/flowforge-website/deploys/6aa7d9255261a80009023005
😎 Deploy Preview https://deploy-preview-5792--flowforge-website.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 25 (🔴 down 22 from production)
Accessibility: 95 (🔴 down 1 from production)
Best Practices: 92 (🔴 down 8 from production)
SEO: 92 (no change from production)
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@dimitrieh

Copy link
Copy Markdown
Contributor Author

Preview affected pages:

Comment thread scripts/gen-site-art.py Outdated
@@ -0,0 +1,106 @@
#!/usr/bin/env python3

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

He dude, if we could do this in node, that would be much better. Now we're not depending on python3 for the website. After this PR, we are?

Would be better to keep it contained.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, and it is node now: scripts/gen-site-art.mjs. Verified it emits a byte-identical nuxt/utils/siteArt.ts apart from its own filename in the generated header. Ported the same way on every branch that carried the script, so nothing here depends on python3.

<HomeHeroSlides> replaces the cross-fading hero background, whose inline script
queried the DOM and left two timers running with no teardown; it still honours
prefers-reduced-motion by never starting, and clears both on unmount.

Three partials become components the page shares with others:
testimonials.njk -> <TestimonialCarousel>, social-proof.njk -> <SocialProof>,
faq.njk -> <BlogFaq>. cta-get-started.njk was four lines reading a `cta` object
the caller set, so it is markup here.

explore-more-content.njk was already ported as ThankYouExploreMore for the
thank-you pages. The homepage renders the same row, so it is renamed to
<ExploreMoreContent> (and ThankYouStoriesBlock to <ExploreMoreStories>).

That component linked its webinar without a trailing slash while the site sets
trailingSlash: true, so every click took a redirect. Fixed, which also affects
the four thank-you pages that render it.

site.messaging.heroTagLine and .subtitle are literals here rather than reads
through a global. nuxt.config.ts still imports src/_data/site.json for its own
config, so nothing is duplicated that teardown will not resolve.

Verified against production. The only difference is the webinar button's label
case, which comes from the CTA registry and is uppercased by CSS, so it renders
the same.
@dimitrieh

Copy link
Copy Markdown
Contributor Author

Rebased on main. scripts/gen-site-art.py is now scripts/gen-site-art.mjs, so the repo still needs nothing but node. Verified it produces a byte-identical nuxt/utils/siteArt.ts apart from its own filename in the generated header, and ported the same way on every branch that carried the script.

One fix from the review pass over the whole migration: the two <CtaSignUp ... icon /> on the homepage rendered no icon. icon is typed string, so a value-less attribute resolves to "", not true, and UButton gets an empty trailing-icon. Every other call site in the repo writes icon="i-lucide-arrow-right".

@Yndira-E

Copy link
Copy Markdown
Contributor

Pushed a commit with two fixes:

  • Hero CTA arrow wrapping to a 2nd line: flex flex-col mb-6 was copied from the 11ty <a> wrapper, but on CtaButton that class lands on the same element that lays out icon+label in a row — flex-col flipped it to a column. Removed (it was vestigial anyway).
  • Dropped SiteArt: the 6 icons it rendered here are byte-identical to Heroicons, so swapped to <Icon i-heroicons-*> (arrow-long-right → -solid variant) and removed SiteArt.vue/siteArt.ts/gen-site-art.mjs since nothing else used them. A truly custom icon can still get a one-off SFC in nuxt/components/icons/same as GithubIcon.vue.

@Yndira-E Yndira-E left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the current state of the homepage bottom section since both blog articles and webinars are now in nuxt
Image

I'm merging now to fix this. If the other reviewers have feedback, that can be address in a follow up pr

@Yndira-E
Yndira-E merged commit c69647d into main Sep 14, 2026
8 checks passed
@Yndira-E
Yndira-E deleted the nuxt/homepage branch September 14, 2026 11:36
@dimitrieh

Copy link
Copy Markdown
Contributor Author

Following up on the note about other reviewers' feedback going to a later PR. The one thread still open here asked for scripts/gen-site-art.py to be node rather than python3, so the site does not depend on python3.

It is resolved across the board now, not just renamed: gen-site-art.mjs is deleted outright on every remaining migration PR, along with SiteArt.vue and siteArt.ts, with the glyphs going through <UIcon> instead. That is #5780, #5781, #5785, #5786, #5793 and #5794.

So nothing depends on python3 for the website, and there is no generator script left to depend on either.

This branch was successfully deployed

1 active deployment
Preview — 74999000 Deployed Sep 14, 2026 by github-actions[bot]
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.

3 participants