Skip to content

feat(frontend): basic NyxID blog page with content preview #524

@ctkm-aelf

Description

@ctkm-aelf

Summary

Ship a minimal NyxID blog page on the marketing site that renders blog posts
fetched from an external CDN, with a preview mode for unpublished drafts.

Motivation

Marketing needs a place to publish posts (release notes, deep dives, launch
announcements) without redeploying the frontend on every edit. Hosting the
content on a CDN lets writers iterate independently of the app's deploy
cadence and gives us a clean separation between code and content.

Scope

  • New /blog route with index (post list) and /blog/:slug (post detail)
  • Posts fetched at request time from a CDN base URL
  • ?preview=<token> query param to render unpublished drafts from a
    separate preview path on the same CDN
  • CDN base URL and preview token configured via env vars
    (e.g. VITE_BLOG_CDN_URL, VITE_BLOG_PREVIEW_TOKEN) so deploys can swap
    CDN buckets without code changes
  • Markdown rendering (frontmatter for title / date / author / slug)
  • Basic styling consistent with DESIGN.md

Out of scope

  • Authoring UI / CMS — content is committed to the CDN bucket out-of-band
  • Comments, reactions, search
  • RSS / sitemap (follow-up)
  • Pagination beyond a simple "latest N" list

Acceptance criteria

  • /blog lists posts pulled from the configured CDN
  • /blog/:slug renders a post's markdown with frontmatter metadata
  • Preview mode renders draft posts when ?preview=<token> matches the
    configured token
  • CDN URL + preview token are env-driven (documented in docs/ENV.md)
  • Page passes the DESIGN.md visual checklist

Dependencies

Deadline

Thu 2026-04-30 (W18).

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions