diff --git a/web/src/pages/posts/[slug].astro b/web/src/pages/posts/[slug].astro
index 1502194..52b83eb 100644
--- a/web/src/pages/posts/[slug].astro
+++ b/web/src/pages/posts/[slug].astro
@@ -1,5 +1,106 @@
---
import Base from "@layout/Base";
-
+import { getFormattedDate } from "@utils/date";
+import { calcReadTime } from '@utils/post'
+import { authPB } from "@utils/pocketbase";
+const { slug } = Astro.params
export const prerender = false
----
\ No newline at end of file
+
+const pb = await authPB()
+
+const post = await pb.collection('posts').getFirstListItem(`slug="${slug}"`)
+
+const { title, content, publishDate, description } = post
+
+const headerImage = pb.files.getURL(post, post.headerImage)
+
+const wordCount = content.split(' ').length;
+const readTime = calcReadTime(wordCount);
+const formattedPublishDate = getFormattedDate(publishDate);
+
+---
+
+
{title}
+ + + +{description}
+ + | + {readTime} min. read | + { + post.tags.map((tag, i) => ( + <> + + #{tag} + + {i < post.tags.length - 1 && ", "} + > + )) + } + + + + +