How granted07/genu-website works
Generation Uprising is an editorial publishing site with public article collections and detail pages, a Hall of Noise audio section, team and sponsor pages, and an admin content workspace. The main reader workflow is browsing a collection, selecting an article, and viewing its rendered detail; collection data is served through preview APIs and shared caching. Admin routes authenticate requests and manage content, including Hall of Noise uploads. The graph follows explicit imports, sampled calls, and documented product pages; several unsampled routes and page-to-component links are not inferred.
Main entry points: supabase.ts Supabase access · admin-auth.ts Admin authorization · page.tsx Collection pages · route.ts Public audio API
Components 26
Public publishing
- Collection pages
app/case-files/page.tsx - Collection interface
components/article-section-landing.client.tsx - Case file interface
components/case-files-landing.client.tsx - Article pages
app/case-files/[casefiles]/page.tsx - Article renderer
components/article-page.tsx - Markdown renderer
components/article-markdown.tsx - Team page
app/team/page.tsx - Team roster
components/team/team-roster.client.tsx - Team visual
components/team/team-core.tsx
Hall of Noise
- Audio page
app/hall-of-noise/page.tsx - Public audio API
app/api/hall-of-noise/route.ts
Administration
- Admin workspace
components/admin/article-editor-workspace.tsx - Admin content API
app/api/admin/data/route.ts - Audio management API
app/api/admin/hall-of-noise/route.ts - Admin login API
app/api/admin/auth/route.ts - Admin authorization
lib/admin-auth.ts
Shared services
- Collection APIs
app/api/casefiles/route.ts - Content preview
lib/content-preview.ts - Supabase access
lib/supabase.ts - Content database
- Content cache
lib/cache.ts - Redis
lib/redis.ts - Rate limiting
lib/rate-limit.ts - JWT utilities
lib/jwt.ts - Structured logging
lib/logger.ts
Other components
- Site visitor
Connections 26
- Site visitor → Collection pages: browses
- Collection pages → Collection interface: renders
app/case-files/page.tsx - Collection pages → Case file interface: renders
app/case-files/page.tsx - Site visitor → Article pages: opens
- Article pages → Article renderer: renders
app/case-files/[casefiles]/page.tsx - Article renderer → Markdown renderer: renders
components/article-page.tsx - Collection APIs → Content preview: fetches previews
app/api/casefiles/route.ts - Content preview → Content cache: caches results
lib/content-preview.ts - Content preview → Supabase access: queries RPC
lib/content-preview.ts - Supabase access → Content database: reads and writes
lib/supabase.ts - Site visitor → Audio page: visits
- Audio page → Public audio API: loads audio listings
- Public audio API → Content cache: caches results
app/api/hall-of-noise/route.ts - Public audio API → Supabase access: queries audio
app/api/hall-of-noise/route.ts - Team page → Team roster: renders
app/team/page.tsx - Team roster → Team visual: renders
components/team/team-roster.client.tsx - Admin content API → Admin authorization: checks access
app/api/admin/data/route.ts - Audio management API → Admin authorization: checks access
app/api/admin/hall-of-noise/route.ts - Admin content API → Supabase access: manages content
app/api/admin/data/route.ts - Audio management API → Supabase access: manages audio
app/api/admin/hall-of-noise/route.ts - Admin login API → JWT utilities: uses tokens
app/api/admin/auth/route.ts - Admin login API → Rate limiting: limits requests
app/api/admin/auth/route.ts - Admin authorization → JWT utilities: verifies tokens
lib/admin-auth.ts - Admin authorization → Rate limiting: limits requests
lib/admin-auth.ts - Content cache → Redis: uses cache backend
lib/cache.ts - Rate limiting → Redis: uses limiter backend
lib/rate-limit.ts