[codex] Refresh incubator week page#2395
Conversation
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughThis pull request updates the Incubator Week grant programme with revised marketing copy, funding details, and page structure. Changes include updating the programme entry status from "On hiatus" to "Active" and specifying "Cohort 4 runs in London, 1–5 June" with a 26 May application deadline. New React components ( Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Review rate limit: 0/1 reviews remaining, refill in 60 minutes.Comment |
Greptile SummaryThis PR refreshes the Incubator Week page around the new 5-day / 0%-equity positioning, replacing the old section set ( Confidence Score: 4/5Safe to merge — all changes are presentational copy/layout with no logic or data regressions. Only P2 findings: a duplicated deadline string across three files and a redundant hook call. No logic bugs, security issues, or broken contracts. apps/website/src/pages/programs/incubator-week.tsx — duplicate APPLICATION_DEADLINE and double hook invocation. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
IW[incubator-week.tsx]
IW -->|calls| UGAU[useGrantApplicationUrl]
IW -->|renders| GSS[GrantStatsStrip]
GSS -->|also calls| UGAU
IW -->|renders| TRS[TrackRecordSection]
IW -->|renders| TWS[TheWeekSection]
IW -->|renders| AYS[AboutYouSection]
IW -->|renders| ABS[AboutBlueDotSection]
ABS -->|receives applicationUrl prop| IW
style UGAU fill:#fde68a,stroke:#d97706
style IW fill:#dbeafe,stroke:#3b82f6
Reviews (1): Last reviewed commit: "Refresh incubator week page" | Re-trigger Greptile |
| const applicationUrl = useGrantApplicationUrl('incubator-week'); | ||
|
|
||
| return ( | ||
| <div> | ||
| <Head> | ||
| <title>{`${PAGE_TITLE} | BlueDot Impact`}</title> | ||
| <meta | ||
| name="description" | ||
| content="A 5-day intensive for founders building organizations to make AI go well. Develop threat models, design interventions, pitch for funding. All expenses paid in London." | ||
| content="Most accelerators take 12 weeks and 7%. We take 5 days and 0%. Fly to London to turn your AI safety idea into a funded org. $50k if your pitch lands. More for the strongest teams. Equity-free." | ||
| /> | ||
| </Head> | ||
| <MarketingHero | ||
| title="Incubator Week" | ||
| subtitle="A five-day intensive that helps top talent become AI safety founders. All expenses paid. Pitch for funding on Friday. 1-5 June in London." | ||
| subtitle="Most accelerators take 12 weeks and 7%. We take 5 days and 0%. Fly to London to turn your AI safety idea into a funded org. $50k if your pitch lands. More for the strongest teams. Equity-free." | ||
| /> | ||
| <Breadcrumbs route={CURRENT_ROUTE} /> | ||
| <GrantStatsStrip | ||
| program="incubator-week" | ||
| compact | ||
| primaryAction={{ | ||
| label: `Apply by ${APPLICATION_DEADLINE}`, | ||
| url: applicationUrl, | ||
| }} |
There was a problem hiding this comment.
useGrantApplicationUrl called twice for the same program
useGrantApplicationUrl('incubator-week') is invoked here (line 21) and then the result is forwarded into GrantStatsStrip via primaryAction.url. However, GrantStatsStrip unconditionally calls useGrantApplicationUrl(program) internally on every render — even when primaryAction overrides the CTA — so the hook runs twice for the same program slug, computing the same UTM/PostHog-prefixed URL unnecessarily. You can drop the page-level call and let GrantStatsStrip own the URL for the stats strip; pass applicationUrl only to AboutBlueDotSection, which actually requires it as a prop and has no internal hook.
|
|
||
| const PAGE_TITLE = 'Incubator Week'; | ||
|
|
||
| const APPLICATION_DEADLINE = '26 May'; |
There was a problem hiding this comment.
APPLICATION_DEADLINE duplicated across three files
'26 May' is defined as a constant here but is also hardcoded independently in grantPrograms.tsx (scope) and twice in programs.tsx (detail and ctaLabel). These three copies are not connected, so a deadline change requires editing all three files manually and it's easy to miss one. Consider exporting APPLICATION_DEADLINE (or a structured cohort metadata object) from a central location — e.g. alongside the incubator-week entry in grantPrograms.tsx — and importing it wherever the string is needed.
| import { P } from '@bluedot/ui'; | ||
| import { pageSectionHeadingClass } from '../PageListRow'; | ||
|
|
||
| const TrackRecordSection = () => { | ||
| return ( | ||
| <section className="section section-body incubator-week-track-record-section"> | ||
| <div className="w-full flex flex-col gap-6"> | ||
| <h3 className={pageSectionHeadingClass}>Track record</h3> | ||
|
|
||
| <div className="flex flex-col gap-5"> |
There was a problem hiding this comment.
Consider adding Storybook stories for new components
TrackRecordSection, AboutYouSection, and AboutBlueDotSection are all new components introduced in this PR. Per the team's guidelines, consider adding Storybook stories for them so they can be visually reviewed and tested in isolation.
Rule Used: Consider adding Storybook stories for new componen... (source)
Learned From
bluedotimpact/bluedot#956
bluedotimpact/bluedot#969
bluedotimpact/bluedot#958
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Summary
Validation