Commit a4f09d4
feat(landing): rebuild home into an ecosystem-integrated experience (#23)
* feat(landing): rebuild home into an ecosystem-integrated experience
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>
* chore(format): include .mjs files in prettier glob
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>
* fix(stats): cap network requests with a timeout so a hung API can't stall 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>
* feat(landing): refine copy, sync About nav, drop fabricated roadmap
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>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent a977dbd commit a4f09d4
13 files changed
Lines changed: 2803 additions & 204 deletions
File tree
- .github/workflows
- css
- images/showcase
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
12 | 18 | | |
13 | 19 | | |
14 | 20 | | |
| |||
40 | 46 | | |
41 | 47 | | |
42 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
43 | 55 | | |
44 | 56 | | |
45 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
48 | 49 | | |
49 | 50 | | |
50 | 51 | | |
| |||
53 | 54 | | |
54 | 55 | | |
55 | 56 | | |
| 57 | + | |
56 | 58 | | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
67 | 67 | | |
| 68 | + | |
68 | 69 | | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
73 | 76 | | |
| 77 | + | |
74 | 78 | | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
85 | 85 | | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
92 | 103 | | |
93 | 104 | | |
94 | | - | |
| 105 | + | |
95 | 106 | | |
96 | 107 | | |
97 | 108 | | |
| |||
1055 | 1066 | | |
1056 | 1067 | | |
1057 | 1068 | | |
| 1069 | + | |
| 1070 | + | |
| 1071 | + | |
| 1072 | + | |
| 1073 | + | |
| 1074 | + | |
| 1075 | + | |
| 1076 | + | |
| 1077 | + | |
| 1078 | + | |
| 1079 | + | |
| 1080 | + | |
| 1081 | + | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
1058 | 1085 | | |
1059 | 1086 | | |
1060 | 1087 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
191 | 191 | | |
192 | 192 | | |
193 | 193 | | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
0 commit comments