← back to Nineoh Guide
auto-save: 2026-07-26T08:11:40 (4 files) — apps/web/app/layout.tsx apps/web/app/sitemap.ts db/recaps/s1.json apps/web/app/community/
71ac749389e1816aaff09eade8324296c0688067 · 2026-07-26 08:11:48 -0700 · Steve Abrams
Files touched
A apps/web/app/community/page.tsxM apps/web/app/layout.tsxM apps/web/app/sitemap.tsM db/recaps/s1.json
Diff
commit 71ac749389e1816aaff09eade8324296c0688067
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Sun Jul 26 08:11:48 2026 -0700
auto-save: 2026-07-26T08:11:40 (4 files) — apps/web/app/layout.tsx apps/web/app/sitemap.ts db/recaps/s1.json apps/web/app/community/
---
apps/web/app/community/page.tsx | 86 +++++++++++++++++++++++++++++++++++++++++
apps/web/app/layout.tsx | 1 +
apps/web/app/sitemap.ts | 1 +
db/recaps/s1.json | 8 ++--
4 files changed, 92 insertions(+), 4 deletions(-)
diff --git a/apps/web/app/community/page.tsx b/apps/web/app/community/page.tsx
new file mode 100644
index 0000000..ed8e2ce
--- /dev/null
+++ b/apps/web/app/community/page.tsx
@@ -0,0 +1,86 @@
+export const metadata = {
+ title: "Community",
+ description:
+ "Where 90210 fans gather — Reddit, Discord discovery, and the 9021OMG rewatch podcast. Links out to independent fan communities.",
+};
+
+type Link = { name: string; desc: string; href: string; icon: string; verified: string };
+
+const REDDIT: Link[] = [
+ {
+ name: "r/90210",
+ desc: "The main 90210 subreddit — episode talk, cast news, and rewatch threads for the CW-era series and the wider franchise.",
+ href: "https://www.reddit.com/r/90210/",
+ icon: "👽",
+ verified: "active subreddit",
+ },
+ {
+ name: "Search all 90210 subreddits",
+ desc: "Reddit's own search for every 90210 community, including original-series and franchise subs.",
+ href: "https://www.reddit.com/search/?q=90210&type=sr",
+ icon: "🔎",
+ verified: "live search",
+ },
+];
+
+const DISCORD: Link[] = [
+ {
+ name: "Browse 90210 Discord servers",
+ desc: "There's no single official 90210 server, so this is an honest search of public listings — fan servers come and go, so we point you to discovery rather than a link that expires.",
+ href: "https://disboard.org/search?keyword=90210",
+ icon: "💬",
+ verified: "server directory",
+ },
+];
+
+const PODCASTS: Link[] = [
+ {
+ name: "9021OMG",
+ desc: "The official rewatch podcast — original stars Jennie Garth (Kelly) and Tori Spelling (Donna) revisit the series episode by episode.",
+ href: "https://www.google.com/search?q=9021OMG+podcast",
+ icon: "🎙️",
+ verified: "fan podcast",
+ },
+];
+
+function Group({ title, links }: { title: string; links: Link[] }) {
+ return (
+ <>
+ <h2>{title}</h2>
+ <div style={{ display: "grid", gap: 12, gridTemplateColumns: "repeat(auto-fill, minmax(260px, 1fr))" }}>
+ {links.map((l) => (
+ <a
+ key={l.href}
+ className="card"
+ href={l.href}
+ target="_blank"
+ rel="noopener noreferrer"
+ style={{ display: "flex", flexDirection: "column", gap: 6, color: "inherit" }}
+ >
+ <div style={{ fontSize: 26 }}>{l.icon}</div>
+ <strong style={{ fontFamily: "var(--font-display)", fontSize: 16 }}>
+ {l.name} ↗
+ </strong>
+ <span style={{ color: "var(--muted)", fontSize: 12.5, flex: 1 }}>{l.desc}</span>
+ <span className="pill" style={{ alignSelf: "flex-start" }}>{l.verified}</span>
+ </a>
+ ))}
+ </div>
+ </>
+ );
+}
+
+export default function Community() {
+ return (
+ <section>
+ <h1>Community</h1>
+ <p style={{ color: "var(--muted)", fontSize: 13 }}>
+ Where 90210 fans actually hang out. These are independent, fan-run
+ communities — we link out, we don't host or moderate them.
+ </p>
+ <Group title="Reddit" links={REDDIT} />
+ <Group title="Discord" links={DISCORD} />
+ <Group title="Rewatch podcast" links={PODCASTS} />
+ </section>
+ );
+}
diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx
index 4b0a1b6..ddefa24 100644
--- a/apps/web/app/layout.tsx
+++ b/apps/web/app/layout.tsx
@@ -44,6 +44,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
<a href="/cast">Cast</a>
<a href="/news">News</a>
<a href="/games">Games</a>
+ <a href="/community">Community</a>
<a href="/search">Search</a>
</nav>
</div>
diff --git a/apps/web/app/sitemap.ts b/apps/web/app/sitemap.ts
index 7fb42a1..b34fece 100644
--- a/apps/web/app/sitemap.ts
+++ b/apps/web/app/sitemap.ts
@@ -12,6 +12,7 @@ export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
"/cast",
"/news",
"/games",
+ "/community",
"/search",
"/legal/disclaimer",
"/legal/dmca",
diff --git a/db/recaps/s1.json b/db/recaps/s1.json
index f3b3d24..3b1c62f 100644
--- a/db/recaps/s1.json
+++ b/db/recaps/s1.json
@@ -10,18 +10,18 @@
"8": "As homecoming nears, Adrianna returns and tries to repair a fractured friendship that her ex-best-friend isn't ready to forgive — and an unexpected new connection quietly takes root.",
"9": "A long-buried family secret finally surfaces for Annie and Dixon, while what starts as an easygoing girls' night takes a sharply tense turn.",
"10": "Jealousy boils over around Annie's sweet-sixteen as old rivalries sharpen, and campus gossip swirls around a classmate's sudden change of fortune.",
- "11": "Old friendships strain toward a breaking point, a houseguest moves in with the Wilsons, and shifting social alliances shake up the whole group.",
+ "11": "A newly-surfaced Wilson relative settles into the house, Naomi drifts toward a faster crowd, and Silver's jealousy flares when a cheerleader sets her sights on Dixon — all as a longtime friendship quietly curdles.",
"12": "Life-changing news lands for one of the show's veterans as budding romances and buried secrets threaten to upend everyone's plans.",
"13": "An extravagant gift sparks a clash between the Wilson women, long-held secrets inch toward the surface, and a day at the beach brings two friends closer.",
- "14": "Hard decisions weigh on the group as play tryouts loom, and leaning on friends for support turns out to be more complicated than anyone expects.",
- "15": "Difficult truths come out at home while a new friendship stokes insecurity inside an established couple.",
+ "14": "Adrianna leans on Naomi and Kelly through a wrenching personal decision, while Ethan coaches a nervous Annie through the school-play auditions.",
+ "15": "Adrianna finally says the hard words out loud to the people who need to hear them, while Annie bristles at how close Ethan is getting with a new friend, Rhonda.",
"16": "A chance encounter intrigues Naomi, a Valentine's plan falls apart, and simmering jealousy starts to spill into the open.",
"17": "Naomi is drawn to a magnetic, volatile newcomer even as an established relationship hits a fresh and painful snag.",
"18": "When one couple tries to slow things down, a solo road trip to Kansas becomes an emotionally fraught detour.",
"19": "A familiar face arrives in Beverly Hills as road trips, spring-break commitments, and old ties pull the group in very different directions.",
"20": "The Wilsons close the door on Kansas with a Beverly Hills-style yard sale, while old friends navigate the start of new chapters.",
"21": "The unexpected return of Naomi's older sister upends her world just as a double date and a big reveal come to a head.",
- "22": "Bachelor and bachelorette celebrations split the group for a night out that goes nowhere near as planned.",
+ "22": "Navid and Adrianna's engagement means dueling send-offs — her warm bachelorette at the Wilsons', his boys' bachelor night that veers well off the rails.",
"23": "Prom prep glams up the girls, and a decidedly mismatched pairing sets the stage for an eventful night.",
"24": "The season builds to a prom night where long-held secrets, tangled feelings, and a dramatic turn all collide as summer arrives."
}
← 7988044 cast: show info only (name/character/bio), drop headshot pho
·
back to Nineoh Guide
·
recaps: approve S1 (reviewed) + punch up 9 vaguest S2-S5 rec 259dc22 →