forked from Mike/freno-dev
Add the Nessa subdomain landing page served at nessa.freno.me/. - index.tsx: hero, feature highlights, CTA band, and footer themed via useSite() brandColor and useDarkMode(); deliberately avoids freno.me web-auth UI (Nessa uses Clerk) and uses a non-fabricated 'Coming soon' CTA since there's no app-store presence yet. - meta.ts: deterministic PageHeadProps (title, description, OG) as a pure module mirroring the page-head-meta testability pattern; feature copy is derived from real nessaCommunityRouter capabilities (clubs, challenges, social.feed, events). - meta.test.ts: resolves metadata over SITE_CONFIG.nessa + pathname '/' to assert title suffix composition, canonical, OG image fallback, and description content.
40 lines
2.0 KiB
TypeScript
40 lines
2.0 KiB
TypeScript
/**
|
|
* Deterministic `PageHead` metadata for the Nessa landing page (task 07).
|
|
*
|
|
* Pure module — imports NOTHING from solid-js / @solidjs/router / @solidjs/meta —
|
|
* so the landing-page metadata can be unit-tested in `bun:test` without
|
|
* spinning up the router / MetaProvider / DOM, mirroring the
|
|
* `page-head-meta.ts` / `nav-config.ts` testability pattern.
|
|
*
|
|
* `index.tsx` imports `NESSA_LANDING_META` and feeds it to `<PageHead …/>`;
|
|
* `meta.test.ts` asserts the *resolved* title / canonical / OG values against
|
|
* the site-aware `resolvePageHeadMeta` helper (task 02) for the `nessa` site.
|
|
*
|
|
* Nessa-specific metadata contract:
|
|
* - `<title>` resolves to `"Nessa | Nessa"` (props.title + nessa.titleSuffix).
|
|
* - canonical resolves to `https://nessa.freno.me/` (auto-derived from
|
|
* `site.domain` + the browser pathname `/` — the vercel.json host rewrite
|
|
* targets the internal `/nessa` prefix but leaves the public URL clean).
|
|
* - `og:image` falls back to the site's `ogDefaultImage` (`/nessa/og-default.png`).
|
|
* - description emphasizes Nessa's community capabilities (clubs, challenges,
|
|
* social feed, events) — derived from `nessaCommunityRouter`, not fabricated.
|
|
*/
|
|
import type { PageHeadProps } from "~/components/page-head-meta";
|
|
|
|
/**
|
|
* PageHead props for the Nessa landing page.
|
|
*
|
|
* `title` is intentionally `"Nessa"` so the site-aware suffix composes into
|
|
* `"Nessa | Nessa"`. An explicit `ogTitle` is provided so the OG card reads
|
|
* as a clean brand title rather than the bare `"Nessa"` (which would be the
|
|
* no-suffix fallback) — this matches the marketing-copy intent of the card.
|
|
*/
|
|
export const NESSA_LANDING_META: PageHeadProps = {
|
|
title: "Nessa",
|
|
description:
|
|
"Nessa is a community platform for building clubs, running challenges, sharing in a social feed, and organizing events.",
|
|
ogTitle: "Nessa — Build community. Run challenges. Stay connected.",
|
|
ogDescription:
|
|
"Nessa brings clubs, challenges, social posts, and events together in one community platform."
|
|
};
|