feat(landing): rebuild home into an ecosystem-integrated experience#23
Merged
Conversation
Turn the single-hero landing page into a full developer/researcher funnel that surfaces the whole RocketPy ecosystem. Sections: sticky nav (text labels + persistent Simulate CTA + live GitHub star badge + mobile menu); reworked hero with `pip install rocketpy`, CTA cluster and micro social-proof; live stats band; four-class quickstart with syntax-highlighted, copyable code and an Open-in-Colab link; output showcase; auto-scrolling features carousel; validation + used-by wall; ecosystem cards (RocketSerializer / Infinity-API / App / Docs); R&D roadmap; community; how -to-cite with copyable BibTeX; final CTA; and an expanded footer with link columns. Live stats (GitHub stars/forks/contributors, recent PyPI downloads) are fetched at build time by scripts/fetch-stats.mjs and injected into dist, with static fallbacks and continue-on-error so a flaky API never breaks a deploy. A monthly cron redeploy keeps the numbers fresh. New css/home.css reuses the about.css component recipes so both pages read as one system; footer columns are additive so the About footer is unchanged. Accessibility: prefers-reduced-motion, skip link, focus rings and a noscript fallback. No new npm dependencies. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Rebuilds the static landing page into a more comprehensive “ecosystem-integrated” funnel while keeping the existing design language, and adds build-time injection of live GitHub/PyPI stats during CI deploys.
Changes:
- Replaces
index.htmlcontent with new sections (sticky nav, stats band, quickstart, showcase, features marquee, ecosystem, community, citation, final CTA) and an expanded landing-page footer. - Adds build-time stats injection (
scripts/fetch-stats.mjs) and wires it into the GitHub Pages workflow, plus a monthly scheduled redeploy. - Introduces new landing-page styling in
css/home.css, new showcase SVG assets, and updates sitemaplastmod.
Reviewed changes
Copilot reviewed 8 out of 11 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
sitemap.xml |
Updates lastmod timestamps for main pages. |
scripts/fetch-stats.mjs |
New Node script to fetch GitHub/PyPI metrics and inject into dist/index.html. |
package.json |
Adds home.css minification and a stats script entry. |
index.html |
Major landing-page restructure, new sections, and client-side JS for nav/marquee/copy helpers. |
images/showcase/stability-margin.svg |
Adds showcase illustration asset. |
images/showcase/flight-3d.svg |
Adds showcase illustration asset. |
images/showcase/altitude-speed.svg |
Adds showcase illustration asset. |
css/main.css |
Adds accessibility utilities (sr-only, skip link, focus-visible) and reduced-motion behavior. |
css/home.css |
New stylesheet powering landing-page sections and responsive behavior. |
css/footer.css |
Adds expanded landing-page footer styles (additive to existing footer). |
.github/workflows/static.yml |
Adds monthly schedule and runs stats refresh during deployment. |
Comment on lines
+49
to
+53
| - name: Refresh live stats | ||
| run: npm run stats | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| continue-on-error: true |
Comment on lines
+6
to
+10
| "format": "prettier --write '**/*.{html,css,js}'", | ||
| "build": "npm run build:css && npm run build:html", | ||
| "build:css": "npm run minify:css:main && npm run minify:css:footer && npm run minify:css:about", | ||
| "build:css": "npm run minify:css:main && npm run minify:css:footer && npm run minify:css:about && npm run minify:css:home", | ||
| "build:html": "npm run minify:html:index && npm run minify:html:about", | ||
| "stats": "node scripts/fetch-stats.mjs", |
Member
Author
|
@claude review |
Ensures scripts/fetch-stats.mjs is covered by `npm run format`, keeping the build script consistent with the rest of the repo (addresses Copilot review feedback on PR #23). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tall deploy `continue-on-error` handles a failed stats fetch but not a hung one — a slow or stalled GitHub/PyPI endpoint would keep the deploy step waiting up to the job's default timeout. Add an 8s AbortSignal.timeout to both fetches (rejection falls through to the existing try/catch and committed defaults) and a 3-minute step-level timeout-minutes as a backstop. Addresses the blocking finding from the PR #23 review. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Landing-page content and consistency fixes from review feedback: - Hero: balance the tagline so "The sky is not the limit!" no longer orphans "limit!" on its own line (text-wrap: balance). - Quickstart: clarify that SolidMotor is one of several motor variants (Solid/Hybrid/Liquid/Generic); keep the four-class framing. - Stats band: replace "refreshed on every deploy" with a build-injected "Updated <Month Year>" label. - Remove the fabricated "frontier of flight simulation" R&D section (and its now-dead CSS) - the team is not working on those items. - Rename the web app to "Jarvis" in the ecosystem card and footer. - State that RocketPy is the official simulator of EuRoC (2022) and LASC (2025), supported by the team. About page now shares the landing's sticky header: - Extract the site-header/nav into a shared css/nav.css loaded by both pages (removed the duplicate block from home.css). - About uses the same nav (links back to landing sections), star badge, Simulate CTA, mobile toggle, skip link and #main target. - fetch-stats.mjs now injects the live star count into about.html too. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Rebuilds the landing page (
index.html) from a single hero + three prose blocks into a full developer/researcher funnel that surfaces the whole RocketPy ecosystem — while keeping the existing dark "space" design language (glass panels, amber/teal accents, starfield, scroll-reveal). The About page is untouched.What''s new
pip install rocketpy(copy button), a CTA cluster and micro social-proof.Environment → SolidMotor → Rocket → Flight) as syntax-highlighted, copyable code + Open in Colab.Technical notes
scripts/fetch-stats.mjsfetches GitHub (stars/forks/contributors) and PyPI (recent downloads) and injects them intodist/index.htmlafter the build — zero client JS, static fallbacks, andcontinue-on-errorso a flaky API can never break a deploy.static.ymlgains aschedule: cron "0 6 1 * *"so the site redeploys on the 1st of each month (scheduled runs always use the default branch) and the numbers stay fresh. The stats step uses the workflow''s built-inGITHUB_TOKEN.css/home.cssreuses the component recipes fromabout.cssso both pages read as one system; the new footer columns are additive (About footer unchanged). Registered inpackage.jsonbuild:css.prefers-reduced-motion(freezes starfield/reveal/carousel), skip link, focus rings, and a<noscript>fallback. The carousel falls back to a static wrapping grid under reduced motion.Verification
npm run buildsucceeds (newhome.cssbundled);node scripts/fetch-stats.mjsinjects 7 values againstdistand falls back cleanly offline.Follow-ups (intentionally out of scope)
images/showcase/).images/logos/) for teams that permit it..github/copilot-instructions.mdis stale (describes the pre-refactor site) — worth updating separately.🤖 Generated with Claude Code