feat: add blog with archives, pagination, search, sharing and RSS

- Content collection (one folder per post) with zod schema
- /blog, category and tag archives with /sayfa/<n>/ pagination
- Post page: breadcrumbs, date badges, share bar, TOC, DIY notice,
  code copy, license line, prev/next, BlogPosting + BreadcrumbList JSON-LD
- Sidebar: Pagefind search, categories, featured fallback, tag cloud
- Sätteri HAST plugins for figure/figcaption and external links
- Dual-theme Shiki, themed prose, RSS feed, latest posts on home
- Three sample posts marked as examples

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-16 01:06:07 +03:00
parent f2d943c31b
commit 809f89af08
27 changed files with 1599 additions and 27 deletions
+11
View File
@@ -6,6 +6,8 @@ import mdx from '@astrojs/mdx';
import sitemap from '@astrojs/sitemap';
import node from '@astrojs/node';
import icon from 'astro-icon';
import { satteri } from '@astrojs/markdown-satteri';
import { externalLinksPlugin, figurePlugin } from './src/lib/markdown-plugins.mjs';
/**
* Dev-only routes (style preview); never part of a production build.
@@ -29,6 +31,15 @@ export default defineConfig({
output: 'static',
adapter: node({ mode: 'standalone' }),
integrations: [mdx(), sitemap(), icon({ include: { tabler: ['*'] } }), devRoutes],
markdown: {
processor: satteri({ hastPlugins: [figurePlugin, externalLinksPlugin] }),
// Dual themes; colours switch with [data-theme] in global.css.
shikiConfig: {
themes: { light: 'github-light-high-contrast', dark: 'github-dark-high-contrast' },
defaultColor: false,
wrap: false,
},
},
vite: {
plugins: [tailwindcss()],
},