Marketing Site
The public-facing FitKit marketing surface that lives at the apex domain (e.g. fitkit.fit). Distinct from per-org minisites, which use the same Astro toolchain to render per-tenant landing pages.
What
apps/marketing is an Astro project (server-output, deployable to Vercel via @astrojs/vercel or to Railway via @astrojs/node). It serves the FitKit waitlist landing page, the cookie/privacy/terms/AUP legal pages, the fitness liability waiver, and the accessibility statement.
Why
- Independent codebase from the dashboard (
apps/web) so marketing iterations don’t ship dashboard bundles. - Astro for static-first rendering — fast LCP and trivial CDN caching.
- Localized — Hebrew (
/), English (/en), Russian (/ru) — handled bysrc/i18nplus locale-specific page folders.
Who
- Visitors — prospective gym owners landing from search / partner referrals.
- Compliance reviewers — legal pages are deep-linked from the dashboard footer and from membership signup flows.
Persona impact
| Persona | Impact |
|---|---|
| Gym owner | First touchpoint with FitKit before the trial. Drives waitlist conversions and answers core “is this for me” questions. |
| Member | Lands here when following legal links from the dashboard or from emailed invitations. |
| Internal team | Hosts canonical privacy / terms copy referenced by Stripe-style payment flows for legal compliance. |
Capabilities
- Localized landing page (
/,/en,/ru) — Hebrew is the default to match the primary launch geography. - Standalone waitlist form (
waitlist.astro) — posts to the FitKit waitlist intake (held in the API leads pipeline). - Static legal corpus:
privacy-policy.astro,terms-of-use.astro,cookie-policy.astro,acceptable-use.astro,fitness-waiver.astro,accessibility-statement.astro. - Lightweight animation hooks under
src/animations/(CSS-driven, no runtime JS framework).
Related features
minisites(apps/minisites) — shares the Astro stack but renders per-org marketing sites at custom hosts.webhooks— Clerk handles auth on dashboard, marketing is unauthenticated.leads-crm— waitlist submissions land in the leads pipeline via the API.
Status
Shipped. Lightweight ongoing maintenance — legal copy refresh as policies change, occasional A/B experiments on the hero.
Gaps
- No CMS — copy edits require a deploy. Acceptable for a small static surface; revisit if marketing cadence increases.
- No analytics on the waitlist funnel beyond PostHog page views. A conversion rate dashboard would unblock landing-page experiments.
- No structured data / SEO schema beyond Astro’s default sitemap integration.