Astro builds every .astro here into a static route at the same path.
| Route | File | Notes |
|---|---|---|
/ | index.astro | Landing page. CTA opens SignupModal. |
/approach | approach.astro | Editorial about the editorial stance. |
/about | about.astro | About page. |
/archive | archive.astro | Placeholder for past readings. |
/customize | customize.astro | Auto-opens the SignupModal on load. Kept as a stable URL for backlinks. |
/subscribed | subscribed.astro | Confirmation page after MailerLite double-opt-in click; advertises Reading #1 customization (which now opens the modal). |
/readings | readings/index.astro | Public readings index. |
/readings/<slug> | readings/your-teens-body-is-ahead-of-their-mind.astro | Welcome reading, free for everyone. |
/glossary | glossary.astro | A–Z teen-slang/trends dictionary built from trends.ts (term = title, definition = blurb), each linking to the full trend guide. SEO surface: DefinedTermSet schema + sitewide footer/home-map links. |
/trends | trends/index.astro | All 150 trends. Free tier sees first 12 sorted; members see all 150. Membership state read from the mtw-api Worker’s /api/me. |
/trends/<slug> | trends/[slug].astro | One trend per slug; static-generated from src/data/trends.ts. |
/science | science/index.astro | ”The Science of Teens — in plain words.” 50 adolescent-psychology concepts. First 10 free / 20 with signup / rest with membership. Same /api/me pattern + family sort as /trends. |
/science/<slug> | science/[slug].astro | One concept per slug; static-generated from src/data/science.ts. Sections: takeaway → what it is → the science → optional inline SVG chart → what it looks like at home → what to do → myth/reality → related. Heroes are programmatic (domain gradient + line icon), no image files. |
/dialogues | dialogues/index.astro | Parent–teen conversation scripts. Topic chips re-rank locally; signup unlocks full library. First 10 free; remainder gated by membership. Same /api/me membership pattern as /trends. |
/dialogues/<slug> | dialogues/[slug].astro | One dialogue per slug; static-generated from src/data/dialogues.ts. Sections: scenario → wrong exchange + why-fails → right exchange + why-works → key phrases. |
/stories | stories/index.astro | Case Studies (route kept as /stories; nav + labels read “Case Studies”). Real situations where the right intervention led to a good outcome — sourced and linked. First 10 free / 20 with signup / rest with membership. Same /api/me pattern + family sort as /trends. |
/stories/<slug> | stories/[slug].astro | One case study per slug; static-generated from src/data/stories.ts. A takeaway callout, then: what happened (situation → move → outcome) → bigger picture → how to apply → solutions → sources → related. |
/membership | membership.astro | $12/mo + $99/yr Stripe Checkout buttons. Calls the Worker /api/checkout to mint a session. |
/membership/welcome | membership/welcome.astro | Stripe Checkout success_url. Calls /api/checkout/complete to set the mtw_member cookie. |
/sign-in | sign-in.astro | Email + password sign-in. POSTs to /api/auth/signin. Members → /trends, non-members → /membership. |
/sign-up | sign-up.astro | Email + password account creation. POSTs to /api/auth/signup-password. Redirects to /membership on success. |
/forgot-password | forgot-password.astro | Email-only form. POSTs to /api/auth/forgot-password. Worker emails a reset link if Resend is configured. |
/reset-password | reset-password.astro | Accepts ?token=... from the reset email and POSTs the new password to /api/auth/reset-password. |
/r/<topic> | r/mental-health.astro, r/screens.astro, r/understand.astro | Hidden landing pages for paid ads. Use LandingBase.astro (no nav). |
/looksmaxxing-guide | looksmaxxing-guide.astro | Paid-ad landing for the Looksmaxxing Parent Guide hook test. Uses LandingBase. CTA opens SignupModal; signup:done fires Meta Pixel Lead event (if META_PIXEL_ID is set in LandingBase.astro). |
/newsletter | newsletter.astro | Paid-ad landing for the Friday Newsletter hook test. Sister to /looksmaxxing-guide for the A/B. Same SignupModal + pixel wiring. |
Base.astro for normal pages (with nav + signup modal mounted).LandingBase.astro for ad-targeted landing pages (no nav, no robots indexing, signup modal still mounted).<SignupCTA /> or a <button data-open-signup>.