Context
With the theme in place (GF3-001), the landing page at / is rebuilt section-by-section
to mirror GMX's Home page. Read the GMX code as you build:
github.com/gmx-io/gmx-interface/tree/release/landing
— every component referenced below lives under landing/src/pages/Home/. The full
spec — render order, layouts, responsive behavior, reference screenshots, and a
GMX→SO4 section map — is 002_landing_page.md, with
permalinks to every GMX source file at the pinned commit. GMX's order is: HeaderMenu →
HeroSection (animated headline, CTA, live stats, feature grid) → LaunchSection (light
band) → LiqiuditySection (light band) → SponsorsSection (light band) → ProgramCards →
FaqSection → RoadmapSection → SocialSection (which includes the footer link row — GMX
has no separate footer). This issue is structure only: layout, components,
responsiveness, and wiring, using placeholder copy and placeholder visuals. Content
perfection is GF3-003.
Scope
- Rebuild
apps/web/src/ui/landing/* into GMX's nine sections (rename/replace the
existing hero/stats/features/markets/how-it-works/infrastructure/final-cta/footer
set per the section map in 002_landing_page.md), composed from
apps/web/src/routes/index.tsx.
- Fixed
HeaderMenu with desktop nav, mobile burger full-screen menu (hairline-divided
links, bottom social row), and btn-landing "Open app" → /trade.
- Hero: 100px display headline with the rotating-word slot (framer-motion
AnimatePresence, 2.5s cycle, y 98→0→−98 — see AnimatedTitle.tsx permalink in
the spec), "Trade now" CTA, subheadline, and the 3-stat row (Traders / Open interest /
Total volume) reading from SO4's stats source with - loading placeholders.
- Feature card grid (
lg:grid-cols-3 lg:grid-rows-3, six rounded-20 cards including
one bg-blue-400 and one col-span-2 CTA card).
- Light bands: LaunchSection (chain launcher grid), LiqiuditySection (live total +
pool cards with hover lift), SponsorsSection (logo card row) — pure-white and
#F4F5F9 surfaces exactly as specced.
- Dark sections: ProgramCards (two program cards over the glow treatment), FaqSection
(grid-rows accordion, no JS height measurement), RoadmapSection (horizontal
quarter timeline with completed/upcoming states), SocialSection (marquee skeleton,
community stats + newsletter form, footer link row).
- Newsletter form, social links, and footer links wired to SO4's real endpoints/URLs
(placeholder handlers where a backend doesn't exist yet).
prefers-reduced-motion respected for the marquee and title rotation.
Acceptance criteria
Out of scope
- Final copy, real partner/tweet content, recreated image assets, and pixel-perfect
parity polish — all GF3-003.
- Theme tokens themselves (GF3-001); this issue consumes them.
- The
/builders, /trader-affiliate-program, and terms pages GMX also ships.
Context
With the theme in place (GF3-001), the landing page at
/is rebuilt section-by-sectionto mirror GMX's Home page. Read the GMX code as you build:
github.com/gmx-io/gmx-interface/tree/release/landing
— every component referenced below lives under
landing/src/pages/Home/. The fullspec — render order, layouts, responsive behavior, reference screenshots, and a
GMX→SO4 section map — is
002_landing_page.md, withpermalinks to every GMX source file at the pinned commit. GMX's order is: HeaderMenu →
HeroSection (animated headline, CTA, live stats, feature grid) → LaunchSection (light
band) → LiqiuditySection (light band) → SponsorsSection (light band) → ProgramCards →
FaqSection → RoadmapSection → SocialSection (which includes the footer link row — GMX
has no separate footer). This issue is structure only: layout, components,
responsiveness, and wiring, using placeholder copy and placeholder visuals. Content
perfection is GF3-003.
Scope
apps/web/src/ui/landing/*into GMX's nine sections (rename/replace theexisting
hero/stats/features/markets/how-it-works/infrastructure/final-cta/footerset per the section map in
002_landing_page.md), composed fromapps/web/src/routes/index.tsx.HeaderMenuwith desktop nav, mobile burger full-screen menu (hairline-dividedlinks, bottom social row), and
btn-landing"Open app" →/trade.AnimatePresence, 2.5s cycle,y 98→0→−98— seeAnimatedTitle.tsxpermalink inthe spec), "Trade now" CTA, subheadline, and the 3-stat row (Traders / Open interest /
Total volume) reading from SO4's stats source with
-loading placeholders.lg:grid-cols-3 lg:grid-rows-3, sixrounded-20cards includingone
bg-blue-400and one col-span-2 CTA card).pool cards with hover lift), SponsorsSection (logo card row) — pure-white and
#F4F5F9surfaces exactly as specced.(grid-rows accordion, no JS height measurement), RoadmapSection (horizontal
quarter timeline with completed/upcoming states), SocialSection (marquee skeleton,
community stats + newsletter form, footer link row).
(placeholder handlers where a backend doesn't exist yet).
prefers-reduced-motionrespected for the marquee and title rotation.Acceptance criteria
/, responsive at 390px / 768px /1440px, matching the layouts in
002_landing_page.md.liquidity/sponsors
#F4F5F9→ programs→footer dark).-while loading; no layout shiftwhen values arrive.
focus states visible.
bun run check:tokens,typecheck, andtestpass; visual-regression baselinesfor
/regenerated and reviewed in the PR.TODO(GF3-003)) so finishing work isgreppable.
Out of scope
parity polish — all GF3-003.
/builders,/trader-affiliate-program, and terms pages GMX also ships.