Skip to content

feat: page redesigns — design system, schema fields, SocialMeta, OG images (Track C)#682

Merged
codercatdev merged 2 commits intodevfrom
feat/redesign-pages
Mar 16, 2026
Merged

feat: page redesigns — design system, schema fields, SocialMeta, OG images (Track C)#682
codercatdev merged 2 commits intodevfrom
feat/redesign-pages

Conversation

@codercatdev
Copy link
Contributor

Track C: Page Redesigns

Full page redesign using Track B design system components + Track A schema fields. 17 files changed, +963/-366.

What Changed

GROQ Queries (queries.ts)

Field Added To
authorName, authorImage baseFields (all content cards)
categories[]-> postListQuery, postQuery
episode, season podcastListQuery
chapters[], series->, listenLinks[] podcastFields
company, role authorQuery, guestQuery
socialPreview (ogTitle, ogDescription, ogImage) All detail queries

BaseLayout

  • Integrated SocialMeta.astro for og:*/twitter:* meta tags
  • Extended Props: ogImage, ogType, publishedAt, author, canonicalUrl
  • SocialMeta has smart defaults: fallback OG image via /api/og/default.png, fallback URL via Astro.url.href

Homepage

  • Hero section: gradient background, "CodingCat.dev" with .dev in primary color, CTA buttons
  • Featured latest podcast: ContentCardFeatured with excerpt + author
  • 4 content rows: Latest Podcasts, Top Podcasts, From the Blog, Top Posts
  • Each row: Badge header + "View All →" link + 4-column ContentCard grid

Blog Listing + Post Detail

  • Listing: Container, Badge header, post count, categories as Tag components
  • Detail: Badge + date + author Avatar + categories, prose with design tokens, author card at bottom
  • socialPreview: ogTitle/ogDescription override defaults when set in Sanity
  • OG image: /api/og/blog.png?title=...&author=...

Podcast Listing + Episode Detail

  • Listing: Container, Badge header, episode/season in metadata
  • Detail (major upgrade):
    • Series info card (if podcast.series exists)
    • Chapters timeline with timestamps and descriptions
    • Guest cards with Avatar, company, role, link to guest page
    • Listen links (Spotify, Apple Podcasts, etc.)
    • Picks section with design tokens
    • OG image: /api/og/podcast.png?title=...&author=...&episodeNumber=...

Person Pages (Author, Guest, Sponsor)

  • PersonDetail component: design tokens, company/role display, ContentCard new interface, Badge headers for related content
  • All detail pages: socialPreview support, OG images
  • All listing pages: Container, design tokens, OG images

404 Page

  • Gradient "404" text (primary color)
  • Cat-themed message: "This page has gone on a catnap. 😸"
  • Button components (primary + secondary)

Generic Pages ([slug].astro)

  • Container narrow, design tokens, OG image

Design System Compliance

  • Zero hardcoded colors — no text-gray-*, bg-gray-*, text-blue-* anywhere
  • ✅ All pages use design tokens (--text, --surface, --border, --color-type-*)
  • ✅ All ContentCard usage updated to new interface (url, type, thumbnail, authorName, authorImage, metadata)
  • ✅ All pages have export const prerender = false (SSR)
  • ✅ Prose styling uses design tokens for headings, links, code blocks, blockquotes

Dependencies

Note on SocialMeta

This PR includes a SocialMeta.astro component. Track D (PR #681) also has one. This version is more complete (smart defaults, og:site_name, twitter:site). When both merge to dev, keep this version.

Build

✅ 15.46s — clean build, only pre-existing chunk size warning.

Miriad and others added 2 commits March 16, 2026 22:29
…lMeta, OG images

Track C: Full page redesign using Track B design system + Track A schema fields.

GROQ queries (queries.ts):
- Added authorName/authorImage to baseFields (all content cards)
- Added categories[]-> to post queries
- Added episode/season to podcast list query
- Added chapters[], series->, listenLinks[] to podcast detail
- Added company, role to author/guest queries
- Added socialPreview (ogTitle, ogDescription, ogImage) to all detail queries

BaseLayout:
- Integrated SocialMeta component for og:*/twitter:* meta tags
- Extended Props: ogImage, ogType, publishedAt, author, canonicalUrl

Homepage (index.astro):
- Hero section with gradient background + CTA buttons
- Featured latest podcast with ContentCardFeatured
- 4 content rows with Badge headers + "View All" links
- All ContentCards use new interface (url, type, thumbnail, authorName)

Blog listing + Post detail:
- Container, Badge, categories as Tags, author Avatar
- Post detail: prose styling with design tokens, author card, socialPreview
- Dynamic OG images via /api/og/blog.png

Podcast listing + Episode detail:
- Series info card, chapters timeline with timestamps
- Guest cards with Avatar, company, role
- Listen links (Spotify, Apple, etc.)
- Picks section with design tokens
- Dynamic OG images via /api/og/podcast.png

Person pages (author, guest, sponsor):
- PersonDetail: design tokens, company/role, ContentCard new interface
- All detail pages: socialPreview support, OG images
- All listing pages: Container, design tokens

404: Gradient text, cat-themed message, Button components
Generic pages: Container narrow, design tokens, OG images

Design compliance:
- Zero hardcoded text-gray-*/bg-gray-*/text-blue-* colors
- All pages use design tokens (--text, --surface, --border, etc.)
- All ContentCards use new interface (url, type, thumbnail)

Build: 15.46s ✅

Co-authored-by: seniordeveloper <seniordeveloper@miriad.systems>
…socialPreview

Addresses consolidated review feedback from PM, @SocialMediaStrategist,
@podcaststrategist, @uidesigner, and @content:

1. listenLinks GROQ: changed from array query `listenLinks[]{ platform, url }`
   to flat object `listenLinks` matching schema shape (object with named keys:
   youtube, spotify, apple, overcast, pocketCasts, rss)
2. listenLinks template: iterate Object.entries() instead of array .map(),
   platformLabels keyed by schema field names
3. SocialMeta: added og:image:width (1200), og:image:height (630),
   og:image:alt (title), og:locale (en_US)
4. Podcast OG URL: added &guest= param for guest name in social previews
5. pageQuery: added socialPreview fields (ogTitle, ogDescription, ogImage)
6. [slug].astro: uses socialPreview with fallback chain
7. Chapters GROQ: changed `description` to `seconds` per schema definition

Build: 15.68s ✅

Co-authored-by: seniordeveloper <seniordeveloper@miriad.systems>
@codercatdev codercatdev merged commit 74f0c80 into dev Mar 16, 2026
@codercatdev codercatdev deleted the feat/redesign-pages branch March 18, 2026 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant