- {site.domain}
-
- {site.settings?.template || 'Default Template'}
+
{site.domain || 'No domain set'}
+
+ {site.domain ? '🟢 Domain configured' : '⚠️ Set up domain'}
-
diff --git a/frontend/src/pages/preview/page/[pageId].astro b/frontend/src/pages/preview/page/[pageId].astro
new file mode 100644
index 0000000..5d5cce5
--- /dev/null
+++ b/frontend/src/pages/preview/page/[pageId].astro
@@ -0,0 +1,132 @@
+---
+/**
+ * Preview Page Route
+ * Shows a single page in preview mode
+ */
+
+import { getDirectusClient, readItem } from '@/lib/directus/client';
+import type { Page } from '@/types/schema';
+
+const { pageId } = Astro.params;
+
+if (!pageId) {
+ return Astro.redirect('/admin/pages');
+}
+
+let page: Page | null = null;
+let error: string | null = null;
+
+try {
+ const client = getDirectusClient();
+ const result = await client.request(readItem('pages', pageId));
+ page = result as Page;
+} catch (err) {
+ error = err instanceof Error ? err.message : 'Failed to load page';
+ console.error('Preview error:', err);
+}
+
+if (!page) {
+ return Astro.redirect('/admin/pages');
+}
+---
+
+
+
+
+
+ {error ? (
+
+
Error Loading Preview
+
{error}
+
+ ) : (
+ <>
+
+ {page.title}
+
+
+ {page.content && (
+
+
+
+ )}
+
+ {!page.content && (
+
No content yet
+ )}
+ >
+ )}
+
+
+
diff --git a/frontend/src/pages/preview/post/[postId].astro b/frontend/src/pages/preview/post/[postId].astro
new file mode 100644
index 0000000..2c240de
--- /dev/null
+++ b/frontend/src/pages/preview/post/[postId].astro
@@ -0,0 +1,156 @@
+---
+/**
+ * Preview Post/Article Route
+ * Shows a single generated article in preview mode
+ */
+
+import { getDirectusClient, readItem } from '@/lib/directus/client';
+import type { GeneratedArticle } from '@/types/schema';
+
+const { postId } = Astro.params;
+
+if (!postId) {
+ return Astro.redirect('/admin/seo/articles');
+}
+
+let article: GeneratedArticle | null = null;
+let error: string | null = null;
+
+try {
+ const client = getDirectusClient();
+ const result = await client.request(readItem('generated_articles', postId));
+ article = result as GeneratedArticle;
+} catch (err) {
+ error = err instanceof Error ? err.message : 'Failed to load article';
+ console.error('Preview error:', err);
+}
+
+if (!article) {
+ return Astro.redirect('/admin/seo/articles');
+}
+---
+
+
+
+
+