Skip to content

Conversation

@frankdierolf
Copy link
Owner

@frankdierolf frankdierolf commented Jan 19, 2026

Summary

Integrates Nuxt Content v3 as a blog system into the whis.ink website with full multilingual support.

  • Blog listing page at /blog with card grid layout
  • Individual post pages at /blog/[slug] with styled markdown content
  • Locale-specific collections with automatic English fallback
  • Full SEO meta tags support
  • Sample "Hello World" post included

Changes

New Files

  • content.config.ts - Nuxt Content collection definitions
  • app/components/BlogCard.vue - Card component for listings
  • app/components/BlogMeta.vue - Post metadata display
  • app/pages/blog/index.vue - Blog listing page
  • app/pages/blog/[slug].vue - Individual post page
  • content/blog/en/hello-world.md - Sample post

Modified Files

  • nuxt.config.ts - Added @nuxt/content module, blog prerender routes
  • app/layouts/default.vue - Added blog to navigation
  • i18n/locales/*.json - Added blog translations (all 10 locales)
  • package.json - Added @nuxt/content, better-sqlite3

Local Development

# Checkout this PR
gh pr checkout 

# Install dependencies
cd website && npm install

# Run dev server
npm run dev

# Visit http://localhost:3000/blog

Note: This is a draft PR for the initial blog integration. The sample post is a placeholder for demonstration.

Based on a wonderful chitchat with @Laurens-HanzeLink , we spoke about mutliple things, while speaking we draft this pr.

Best regards,
Frank ✌️

Integrate Nuxt Content v3 as a blog system with full multilingual support
for all 10 existing locales.

Features:
- Locale-specific collections with English fallback
- Blog listing page with card grid layout
- Individual post pages with styled prose content
- SEO meta tags (og:image, article:published_time, etc.)
- Navigation link in sidebar

New files:
- content.config.ts: Collection definitions with Zod schema
- BlogCard.vue: Card component for blog listing
- BlogMeta.vue: Post metadata display (date, author, tags)
- pages/blog/index.vue: Blog listing with locale fallback
- pages/blog/[slug].vue: Individual post with ContentRenderer
- content/blog/en/hello-world.md: Sample blog post

Dependencies:
- @nuxt/content
- better-sqlite3
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.

2 participants