diff --git a/README.md b/README.md
index afb130d..9028a82 100644
--- a/README.md
+++ b/README.md
@@ -4,23 +4,6 @@
 
 To view my portfolio **[click here](https://toastiet0ast.com)**
 
-## Features
-
-- Modern and Minimal bento-like, sleek UI Design
-- All in one page (almost)
-- Fully Responsive
-- Performances and SEO optimizations
-- Blog
-- RSS support (your-domain/rss.xml)
-- Cool 3d globe
-
-## Tech Stack
-
-- [Astro](https://astro.build)
-- [unocss](https://unocss.dev/)
-- [motion](https://motion.dev/)
-- [d3](https://d3js.org/)
-
 # Steps ▶️
 
 ```bash
@@ -46,7 +29,3 @@ $ pnpm run dev
 or
 $ npm run dev
 ```
-
-# Configuration
-
-remember to replace the `site` and other properties with your data in `astro.config.mjs`
diff --git a/src/components/BlogHero.astro b/src/components/BlogHero.astro
new file mode 100644
index 0000000..2466135
--- /dev/null
+++ b/src/components/BlogHero.astro
@@ -0,0 +1,56 @@
+---
+interface Props {
+	title: string;
+	tagline?: string;
+    author?: string;
+	align?: 'start' | 'center';
+}
+
+const { align = 'center', tagline, title, author } = Astro.props;
+---
+
+<div class:list={['hero stack gap-4', align]}>
+	<div class="stack gap-2">
+		<h1 class="title">{title}</h1>
+        <p class="author">{author}</p>
+		{tagline && <p class="tagline">{tagline}</p>}
+	</div>
+	<slot />
+</div>
+
+<style>
+	.hero {
+		font-size: var(--text-lg);
+		text-align: center;
+	}
+
+	.title,
+	.tagline {
+		max-width: 37ch;
+		margin-inline: auto;
+	}
+
+	.title {
+		font-size: var(--text-3xl);
+		color: var(--gray-0);
+	}
+
+	@media (min-width: 50em) {
+		.hero {
+			font-size: var(--text-xl);
+		}
+
+		.start {
+			text-align: start;
+		}
+
+		.start .title,
+		.start .tagline {
+			margin-inline: unset;
+		}
+
+		.title {
+			font-size: var(--text-5xl);
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/src/components/BlogPreview.astro b/src/components/BlogPreview.astro
new file mode 100644
index 0000000..6528b16
--- /dev/null
+++ b/src/components/BlogPreview.astro
@@ -0,0 +1,63 @@
+---
+import type { CollectionEntry } from 'astro:content';
+
+interface Props {
+	blog: CollectionEntry<'blog'>;
+}
+
+const { data, id } = Astro.props.blog;
+---
+
+<a class="card" href={`/blog/${id}`}>
+	<span class="title">{data.title}</span>
+</a>
+
+<style>
+	.card {
+		display: grid;
+		grid-template: auto 1fr / auto 1fr;
+		height: 11rem;
+		background: var(--gradient-subtle);
+		border: 1px solid var(--gray-800);
+		border-radius: 0.75rem;
+		overflow: hidden;
+		box-shadow: var(--shadow-sm);
+		text-decoration: none;
+		font-family: var(--font-brand);
+		font-size: var(--text-lg);
+		font-weight: 500;
+		transition: box-shadow var(--theme-transition);
+	}
+
+	.card:hover {
+		box-shadow: var(--shadow-md);
+	}
+
+	.title {
+		grid-area: 1 / 1 / 2 / 2;
+		z-index: 1;
+		margin: 0.5rem;
+		padding: 0.5rem 1rem;
+		background: var(--gray-999);
+		color: var(--gray-200);
+		border-radius: 0.375rem;
+	}
+
+	img {
+		grid-area: 1 / 1 / 3 / 3;
+		width: 100%;
+		height: 100%;
+		object-fit: cover;
+	}
+
+	@media (min-width: 50em) {
+		.card {
+			height: 22rem;
+			border-radius: 1.5rem;
+		}
+
+		.title {
+			border-radius: 0.9375rem;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/src/components/Nav.astro b/src/components/Nav.astro
index 8eb0c5e..0f29786 100644
--- a/src/components/Nav.astro
+++ b/src/components/Nav.astro
@@ -6,7 +6,8 @@ import type { iconPaths } from './IconPaths';
 /** Main menu items */
 const textLinks: { label: string; href: string }[] = [
 	{ label: 'Home', href: '/' },
-	{ label: 'Work', href: '/work/' },
+	{ label: 'Projects', href: '/projects/' },
+	{ label: 'Blog', href: "/blog/" },
 	{ label: 'About', href: '/about/' },
 ];
 
diff --git a/src/components/PortfolioPreview.astro b/src/components/PortfolioPreview.astro
index 743ed85..926fe3e 100644
--- a/src/components/PortfolioPreview.astro
+++ b/src/components/PortfolioPreview.astro
@@ -2,13 +2,13 @@
 import type { CollectionEntry } from 'astro:content';
 
 interface Props {
-	project: CollectionEntry<'work'>;
+	project: CollectionEntry<'projects'>;
 }
 
 const { data, id } = Astro.props.project;
 ---
 
-<a class="card" href={`/work/${id}`}>
+<a class="card" href={`/projects/${id}`}>
 	<span class="title">{data.title}</span>
 	<img src={data.img} alt={data.img_alt || ''} loading="lazy" decoding="async" />
 </a>
diff --git a/src/content.config.ts b/src/content.config.ts
index eb3111c..e0db33c 100644
--- a/src/content.config.ts
+++ b/src/content.config.ts
@@ -2,9 +2,9 @@ import { glob } from 'astro/loaders';
 import { defineCollection, z } from 'astro:content';
 
 export const collections = {
-	work: defineCollection({
-		// Load Markdown files in the src/content/work directory.
-		loader: glob({ base: './src/content/work', pattern: '**/*.md', }),
+	projects: defineCollection({
+		// Load Markdown files in the src/content/projects directory.
+		loader: glob({ base: './src/content/projects', pattern: '**/*.md', }),
 		schema: z.object({
 			title: z.string(),
 			description: z.string(),
@@ -14,4 +14,17 @@ export const collections = {
 			img_alt: z.string().optional(),
 		}),
 	}),
+
+	blog: defineCollection({
+		loader: glob({ base: './src/content/blog', pattern: '**/*.md', }),
+		schema: z.object({
+			author: z.string(),
+			publishDate: z.date(),
+			title: z.string(),
+			postSlug: z.string().optional(),
+			tags: z.array(z.string()).default(["others"]),
+			description: z.string(),
+			canonicalURL: z.string().optional(),
+		}),
+	}),
 };
\ No newline at end of file
diff --git a/src/content/blog/new-things.md b/src/content/blog/new-things.md
new file mode 100644
index 0000000..9361c30
--- /dev/null
+++ b/src/content/blog/new-things.md
@@ -0,0 +1,40 @@
+---
+author: Toastie
+publishDate: 2023-12-09
+title: New projects
+description: The projects I have started.
+tags:
+  - project-update
+---
+
+Hi there, it has been a while.
+
+I am back to let you all know how life has been treating me so far as well as share the projects I have been working on.
+
+### First up is Valkyriecoms,
+
+Valkyriecoms is a social site I have been working on since December last year and just got things fully up, below is a screenshot of the site.
+
+![](https://cdn.discordapp.com/attachments/1138770664342441984/1182117160609386650/image.png)
+
+### Next up is Dragon's child hosting
+
+Dragon's child hosting is a small server hosting service I started under the Dragon's child studios name right now we are just starting out on our journey.
+
+Below is a screenshot of our panel (there is a new one which will replace this in the works)
+
+![](https://cdn.discordapp.com/attachments/881396607218753607/1182651077384994816/dashboard.png)
+
+### Last up is Toastielab
+
+Toastielab is a small git platform that I operate wit the help of Dragon's child studios which is where I host all my projects (even the one which this site is located at)
+
+I am going to include a screenshot of Toastielab below (our icons a little bit bugged right now so it is currently showing the default Forgejo icons)
+
+![](https://cdn.discordapp.com/attachments/881396607218753607/1182653249480835163/image.png)
+
+### Here is a list of links for the projects listed above
+
+- https://valkyriecoms.com
+- https://dragonschildhosting.net
+- https://toastielab.dev
diff --git a/src/content/blog/where-i-have-been.md b/src/content/blog/where-i-have-been.md
new file mode 100644
index 0000000..05a0eeb
--- /dev/null
+++ b/src/content/blog/where-i-have-been.md
@@ -0,0 +1,16 @@
+---
+author: Toastie
+publishDate: 2023-06-21
+title: Update on things
+description: Where I have been among other things.
+tags:
+  - update
+---
+
+Hey guys it has been a while and I have not streamed in a little while and I want to update you on why this has happened, First of all I have been having somputer issues as well as some IRL stuff taking over a lot, Secondly I have started some major projects, one with a friend and another to support me first project. These projects are as follows [Valkyriecoms](https://valkyriecoms.com), [Toastielab](https://toastielab.dev) and last but not least a small group stared by me and a good friend who you may know by Elearu called [Dragon's Child Studios](https://dragonschildstudios.com).
+
+As you can see I have been quite busy but I hope I will be able to return to streaming once everything starts to quiet down a little.
+
+Thanks for taking the time to read this,
+
+Toastie_t0ast
diff --git a/src/content/work/dcs.md b/src/content/projects/dcs.md
similarity index 100%
rename from src/content/work/dcs.md
rename to src/content/projects/dcs.md
diff --git a/src/content/work/ellie-bot.md b/src/content/projects/ellie-bot.md
similarity index 100%
rename from src/content/work/ellie-bot.md
rename to src/content/projects/ellie-bot.md
diff --git a/src/content/projects/toastielab.md b/src/content/projects/toastielab.md
new file mode 100644
index 0000000..3144809
--- /dev/null
+++ b/src/content/projects/toastielab.md
@@ -0,0 +1,13 @@
+---
+title: Toastielab
+publishDate: 2024-12-01 00:00:00
+img: /assets/toastielab.png
+img_alt: A picture of my the Toastielab cover logo.
+description: |
+  A small git hosting site.
+tags:
+  - Development
+  - Services
+---
+
+Toastielab is a small git platform that I operate wit the help of Dragon’s child studios which is where I host all my projects (even the one which this site is located at)
\ No newline at end of file
diff --git a/src/content/work/valkyriecoms.md b/src/content/projects/valkyriecoms.md
similarity index 100%
rename from src/content/work/valkyriecoms.md
rename to src/content/projects/valkyriecoms.md
diff --git a/src/pages/blog.astro b/src/pages/blog.astro
new file mode 100644
index 0000000..3fb559c
--- /dev/null
+++ b/src/pages/blog.astro
@@ -0,0 +1,39 @@
+---
+import { getCollection } from 'astro:content';
+
+import BaseLayout from '../layouts/BaseLayout.astro';
+
+import ContactCTA from '../components/ContactCTA.astro';
+import BlogPreview from '../components/BlogPreview.astro';
+import Hero from '../components/Hero.astro';
+import Grid from '../components/Grid.astro';
+
+const blog = (await getCollection('blog')).sort(
+	(a, b) => b.data.publishDate.valueOf() - a.data.publishDate.valueOf(),
+);
+---
+
+<BaseLayout
+	title="My Blog | Toastie_t0ast"
+	description="Learn about what Toastie_t0ast is up to."
+>
+	<div class="stack gap-20">
+		<main class="wrapper stack gap-8">
+			<Hero
+				title="Blog"
+				tagline="Here are some posts that I have made."
+				align="start"
+			/>
+			<Grid variant="offset">
+				{
+					blog.map((blog) => (
+						<li>
+							<BlogPreview blog={blog} />
+						</li>
+					))
+				}
+			</Grid>
+		</main>
+		<ContactCTA />
+	</div>
+</BaseLayout>
\ No newline at end of file
diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro
new file mode 100644
index 0000000..610e0b9
--- /dev/null
+++ b/src/pages/blog/[...slug].astro
@@ -0,0 +1,152 @@
+---
+import { type CollectionEntry, getCollection } from 'astro:content';
+
+import BaseLayout from '../../layouts/BaseLayout.astro';
+
+import ContactCTA from '../../components/ContactCTA.astro';
+import BlogHero from '../../components/BlogHero.astro';
+import Icon from '../../components/Icon.astro';
+import Pill from '../../components/Pill.astro';
+import { render } from 'astro:content';
+
+interface Props {
+	entry: CollectionEntry<'blog'>;
+}
+
+// This is a dynamic route that generates a page for every Markdown file in src/content/
+// Read more about dynamic routes and this `getStaticPaths` function in the Astro docs:
+// https://docs.astro.build/en/core-concepts/routing/#dynamic-routes
+export async function getStaticPaths() {
+	const blog = await getCollection('blog');
+	return blog.map((entry) => ({
+		params: { slug: entry.id },
+		props: { entry },
+	}));
+}
+
+const { entry } = Astro.props;
+const { Content } = await render(entry);
+---
+
+<BaseLayout title={entry.data.title} description={entry.data.description}>
+	<div class="stack gap-20">
+		<div class="stack gap-15">
+			<header>
+				<div class="wrapper stack gap-2">
+					<a class="back-link" href="/blog/"><Icon icon="arrow-left" /> blog</a>
+					<BlogHero title={entry.data.title} align="start">
+                        <p>Author: {entry.data.author}</p>
+						<div class="details">
+							<div class="tags">
+								{entry.data.tags.map((t) => <Pill>{t}</Pill>)}
+							</div>
+							<p class="description">{entry.data.description}</p>
+						</div>
+					</BlogHero>
+				</div>
+			</header>
+			<main class="wrapper">
+				<div class="stack gap-10 content">
+					<div class="content">
+						<Content />
+					</div>
+				</div>
+			</main>
+		</div>
+		<ContactCTA />
+	</div>
+</BaseLayout>
+
+<style>
+	header {
+		padding-bottom: 2.5rem;
+		border-bottom: 1px solid var(--gray-800);
+	}
+
+	.back-link {
+		display: none;
+	}
+
+	.details {
+		display: flex;
+		flex-direction: column;
+		padding: 0.5rem;
+		gap: 1.5rem;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.tags {
+		display: flex;
+		gap: 0.5rem;
+	}
+
+	.description {
+		font-size: var(--text-lg);
+		max-width: 54ch;
+	}
+
+	.content {
+		max-width: 65ch;
+		margin-inline: auto;
+	}
+
+	.content > :global(* + *) {
+		margin-top: 1rem;
+	}
+
+	.content :global(h1),
+	.content :global(h2),
+	.content :global(h3),
+	.content :global(h4),
+	.content :global(h5) {
+		margin: 1.5rem 0;
+	}
+
+	.content :global(img) {
+		border-radius: 1.5rem;
+		box-shadow: var(--shadow-sm);
+		background: var(--gradient-subtle);
+		border: 1px solid var(--gray-800);
+	}
+
+	.content :global(blockquote) {
+		font-size: var(--text-lg);
+		font-family: var(--font-brand);
+		font-weight: 600;
+		line-height: 1.1;
+		padding-inline-start: 1.5rem;
+		border-inline-start: 0.25rem solid var(--accent-dark);
+		color: var(--gray-0);
+	}
+
+	.back-link,
+	.content :global(a) {
+		text-decoration: 1px solid underline transparent;
+		text-underline-offset: 0.25em;
+		transition: text-decoration-color var(--theme-transition);
+	}
+
+	.back-link:hover,
+	.back-link:focus,
+	.content :global(a:hover),
+	.content :global(a:focus) {
+		text-decoration-color: currentColor;
+	}
+
+	@media (min-width: 50em) {
+		.back-link {
+			display: block;
+			align-self: flex-start;
+		}
+
+		.details {
+			flex-direction: row;
+			gap: 2.5rem;
+		}
+
+		.content :global(blockquote) {
+			font-size: var(--text-2xl);
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/src/pages/index.astro b/src/pages/index.astro
index e94e169..144b3b3 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -16,8 +16,8 @@ import PortfolioPreview from '../components/PortfolioPreview.astro';
 import ContactCTA from '../components/ContactCTA.astro';
 import Skills from '../components/Skills.astro';
 
-// Content Fetching: List four most recent work projects
-const projects = (await getCollection('work'))
+// Content Fetching: List four most recent projects
+const projects = (await getCollection('projects'))
 	.sort((a, b) => b.data.publishDate.valueOf() - a.data.publishDate.valueOf())
 	.slice(0, 4);
 
@@ -46,8 +46,8 @@ const projects = (await getCollection('work'))
 		<main class="wrapper stack gap-20 lg:gap-48">
 			<section class="section with-background with-cta">
 				<header class="section-header stack gap-2 lg:gap-4">
-					<h3>Selected Work</h3>
-					<p>Take a look below at some of the work I have worked on over the past few years.</p>
+					<h3>Selected Projects</h3>
+					<p>Take a look below at some of the projects I have worked on over the past few years.</p>
 				</header>
 
 				<div class="gallery">
@@ -63,7 +63,7 @@ const projects = (await getCollection('work'))
 				</div>
 
 				<div class="cta">
-					<CallToAction href="/work/">
+					<CallToAction href="/projects/">
 						View All
 						<Icon icon="arrow-right" size="1.2em" />
 					</CallToAction>
diff --git a/src/pages/work.astro b/src/pages/projects.astro
similarity index 86%
rename from src/pages/work.astro
rename to src/pages/projects.astro
index 16a85f2..56fed4c 100644
--- a/src/pages/work.astro
+++ b/src/pages/projects.astro
@@ -8,19 +8,19 @@ import PortfolioPreview from '../components/PortfolioPreview.astro';
 import Hero from '../components/Hero.astro';
 import Grid from '../components/Grid.astro';
 
-const projects = (await getCollection('work')).sort(
+const projects = (await getCollection('projects')).sort(
 	(a, b) => b.data.publishDate.valueOf() - a.data.publishDate.valueOf(),
 );
 ---
 
 <BaseLayout
-	title="My Work | Toastie_t0ast"
+	title="My Projects | Toastie_t0ast"
 	description="Learn about Toastie_t0ast's most recent projects"
 >
 	<div class="stack gap-20">
 		<main class="wrapper stack gap-8">
 			<Hero
-				title="My Work"
+				title="My Projects"
 				tagline="See my most recent projects below to get an idea of my past experience."
 				align="start"
 			/>
diff --git a/src/pages/work/[...slug].astro b/src/pages/projects/[...slug].astro
similarity index 93%
rename from src/pages/work/[...slug].astro
rename to src/pages/projects/[...slug].astro
index 97c4446..f6b39f4 100644
--- a/src/pages/work/[...slug].astro
+++ b/src/pages/projects/[...slug].astro
@@ -10,15 +10,15 @@ import Pill from '../../components/Pill.astro';
 import { render } from 'astro:content';
 
 interface Props {
-	entry: CollectionEntry<'work'>;
+	entry: CollectionEntry<'projects'>;
 }
 
 // This is a dynamic route that generates a page for every Markdown file in src/content/
 // Read more about dynamic routes and this `getStaticPaths` function in the Astro docs:
 // https://docs.astro.build/en/core-concepts/routing/#dynamic-routes
 export async function getStaticPaths() {
-	const work = await getCollection('work');
-	return work.map((entry) => ({
+	const projects = await getCollection('projects');
+	return projects.map((entry) => ({
 		params: { slug: entry.id },
 		props: { entry },
 	}));
@@ -33,7 +33,7 @@ const { Content } = await render(entry);
 		<div class="stack gap-15">
 			<header>
 				<div class="wrapper stack gap-2">
-					<a class="back-link" href="/work/"><Icon icon="arrow-left" /> Work</a>
+					<a class="back-link" href="/projects/"><Icon icon="arrow-left" /> projects</a>
 					<Hero title={entry.data.title} align="start">
 						<div class="details">
 							<div class="tags">