diff --git a/apps/web/content/blog/bauhaus-echo-launch.mdx b/apps/web/content/blog/bauhaus-echo-launch.mdx index 8761f51..88c44c8 100644 --- a/apps/web/content/blog/bauhaus-echo-launch.mdx +++ b/apps/web/content/blog/bauhaus-echo-launch.mdx @@ -1,6 +1,6 @@ --- title: "Bauhaus Echo is Live" -date: "March 4, 2026" +date: "2026-03-04" excerpt: "A visual memory puzzle inspired by Bauhaus design — now on every platform" --- diff --git a/apps/web/content/blog/crypto-checkout-infrastructure.mdx b/apps/web/content/blog/crypto-checkout-infrastructure.mdx index 4eb0ae1..a99ad0c 100644 --- a/apps/web/content/blog/crypto-checkout-infrastructure.mdx +++ b/apps/web/content/blog/crypto-checkout-infrastructure.mdx @@ -1,6 +1,6 @@ --- title: "Crypto Checkout Infrastructure for Multi-Tenant Shops" -date: "March 10, 2026" +date: "2026-03-10" excerpt: "Non-custodial XMR and WOW checkout, plus Grin via BTCPayServer" --- diff --git a/apps/web/content/blog/smirk-wallet-release.mdx b/apps/web/content/blog/smirk-wallet-release.mdx index a97ef19..e0faaea 100644 --- a/apps/web/content/blog/smirk-wallet-release.mdx +++ b/apps/web/content/blog/smirk-wallet-release.mdx @@ -1,6 +1,6 @@ --- title: "Smirk Wallet v0.1.6" -date: "February 6, 2026" +date: "2026-02-06" excerpt: "Non-custodial social tipping for Telegram and Discord" --- diff --git a/apps/web/content/blog/website-relaunch-2026.mdx b/apps/web/content/blog/website-relaunch-2026.mdx index 1d6754a..73a12d8 100644 --- a/apps/web/content/blog/website-relaunch-2026.mdx +++ b/apps/web/content/blog/website-relaunch-2026.mdx @@ -1,6 +1,6 @@ --- title: "Website Relaunch" -date: "February 6, 2026" +date: "2026-02-06" excerpt: "New design, new infrastructure, same focus on quality" --- diff --git a/apps/web/src/app/blog/[slug]/page.tsx b/apps/web/src/app/blog/[slug]/page.tsx index 30fd618..6f822f1 100644 --- a/apps/web/src/app/blog/[slug]/page.tsx +++ b/apps/web/src/app/blog/[slug]/page.tsx @@ -38,7 +38,7 @@ export default async function BlogPost({ params }: Props) {
- +

{post.title}

{post.excerpt && (

{post.excerpt}

diff --git a/apps/web/src/app/blog/page.tsx b/apps/web/src/app/blog/page.tsx index 5a3b227..f8e9877 100644 --- a/apps/web/src/app/blog/page.tsx +++ b/apps/web/src/app/blog/page.tsx @@ -46,7 +46,7 @@ export default function BlogPage() { {posts.map((post) => ( - +

{post.title}

{post.excerpt}

diff --git a/apps/web/src/lib/blog.ts b/apps/web/src/lib/blog.ts index a26c91f..da653aa 100644 --- a/apps/web/src/lib/blog.ts +++ b/apps/web/src/lib/blog.ts @@ -8,6 +8,7 @@ export type PostMeta = { slug: string; title: string; date: string; + dateDisplay: string; excerpt: string; draft: boolean; }; @@ -26,10 +27,12 @@ export function getAllPosts(): PostMeta[] { const slug = filename.replace(/\.mdx$/, ""); const raw = fs.readFileSync(path.join(CONTENT_DIR, filename), "utf-8"); const { data } = matter(raw); + const iso = data.date ?? ""; return { slug, title: data.title ?? slug, - date: data.date ?? "", + date: iso, + dateDisplay: iso ? new Date(iso + "T12:00:00").toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric" }) : "", excerpt: data.excerpt ?? "", draft: data.draft === true, }; @@ -44,10 +47,12 @@ export function getPost(slug: string): Post | null { const raw = fs.readFileSync(filePath, "utf-8"); const { data, content } = matter(raw); + const iso = data.date ?? ""; return { slug, title: data.title ?? slug, - date: data.date ?? "", + date: iso, + dateDisplay: iso ? new Date(iso + "T12:00:00").toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric" }) : "", excerpt: data.excerpt ?? "", draft: data.draft === true, content,