diff --git a/README.md b/README.md
index b3b246b..1b7f411 100644
--- a/README.md
+++ b/README.md
@@ -125,6 +125,12 @@ Site icons live in `public/icons/`:
To regenerate PNGs after editing the SVG: `npm run generate:icons` (requires `sharp` as a devDependency).
+## 🖼️ Social Share Image
+
+`public/images/og-image.png` is the Open Graph / Twitter Card image shown when a link to the site is shared. It's generated from `public/images/profile.jpg` plus the site's brand colors.
+
+To regenerate it after updating the profile photo or brand colors: `npm run generate:og-image` (requires `sharp` as a devDependency).
+
## 📝 Content Management
- **Blog Posts**: Written in Markdown and stored in `content/blog/`
diff --git a/app/about/page.tsx b/app/about/page.tsx
index decd1c9..c23d35e 100644
--- a/app/about/page.tsx
+++ b/app/about/page.tsx
@@ -1,5 +1,7 @@
import Image from 'next/image'
import type { Metadata } from 'next'
+import { RoleTypewriter } from '@/components/RoleTypewriter'
+import { ScrollReveal } from '@/components/ScrollReveal'
export const metadata: Metadata = {
title: 'About',
@@ -16,7 +18,9 @@ export default function About() {
{/* Header section with role tag */}
-
PRODUCT MANAGER & SOFTWARE DESIGNER
+
+
+
Thomas Bohn
@@ -54,7 +58,8 @@ export default function About() {
{/* Right column - About content */}
-
+
+
{'⟩'}
@@ -108,7 +113,9 @@ export default function About() {
+
+
{'⟩'}
@@ -145,7 +152,9 @@ export default function About() {
+
+
{'⟩'}
@@ -182,7 +191,9 @@ export default function About() {
+
+
{'⟩'}
@@ -235,7 +246,9 @@ export default function About() {
+
+
{'⟩'}
@@ -270,7 +283,9 @@ export default function About() {
+
+
{'⟩'}
@@ -291,6 +306,7 @@ export default function About() {
Contact Me
+
diff --git a/app/blog/[slug]/page.tsx b/app/blog/[slug]/page.tsx
index efe7041..25e5521 100644
--- a/app/blog/[slug]/page.tsx
+++ b/app/blog/[slug]/page.tsx
@@ -3,6 +3,8 @@ import { getBlogPost, getBlogPosts } from '@/lib/blog'
import { notFound } from 'next/navigation'
import Link from 'next/link'
import { FaMedium } from 'react-icons/fa'
+import { ReadingProgressBar } from '@/components/blog/ReadingProgressBar'
+import { ShareButton } from '@/components/blog/ShareButton'
export const dynamicParams = false
@@ -30,10 +32,11 @@ export default async function BlogPost({ params }: { params: Promise<{ slug: str
return (
+
{'>'} SOFTWARE ENGINEER
-
+
{'// BLOG'}
@@ -44,6 +47,7 @@ export default async function BlogPost({ params }: { params: Promise<{ slug: str
>
← Back to Blog
+
{post.mediumUrl && (