--- import Layout from '../../layouts/Layout.astro'; import PostEnhancer from '../../components/react/PostEnhancer'; import { marked } from 'marked'; const { slug } = Astro.params; const API_URL = (typeof process !== 'undefined' ? process.env.PUBLIC_API_URL : import.meta.env.PUBLIC_API_URL) || 'http://localhost:3000'; interface PostDetail { slug: string; content: string; } let post: PostDetail | null = null; let html = ''; let error = ''; try { const response = await fetch(`${API_URL}/api/posts/${slug}`); if (response.ok) { post = await response.json(); html = await marked.parse(post!.content); } else { error = 'Post not found'; } } catch (e) { const cause = (e as any)?.cause; error = `Could not connect to backend at ${API_URL}: ${e instanceof Error ? e.message : String(e)}${cause ? ' (Cause: ' + (cause.message || cause.code || JSON.stringify(cause)) + ')' : ''}`; console.error(error); } function formatSlug(s: string) { if (!s) return ''; return s.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' '); } const isAdmin = Astro.cookies.has('admin_token'); ---
{error && (

{error}

Return home
)} {post && ( <>
Back to list

{formatSlug(post.slug)}

)}