diff --git a/app/writing/a-personal-journey-in-software-engineering/page.mdx b/app/writing/a-personal-journey-in-software-engineering/page.mdx
index 4d635e2..4084012 100644
--- a/app/writing/a-personal-journey-in-software-engineering/page.mdx
+++ b/app/writing/a-personal-journey-in-software-engineering/page.mdx
@@ -1,18 +1,21 @@
import {ArticleLayout} from '../../../components/layouts/ArticleLayout'
import {createSlug} from '../../../lib/createSlug'
+import {metadata as _metadata} from '../../../lib/generateMetadata'
-export const metadata = {
+export const meta = {
authors: 'Ryan Freeman',
title: 'A personal journey in software engineering',
date: '2022-12-04',
description: 'Hello there! If you\'re reading this, you\'ve likely stumbled upon my website — welcome! My name is Ryan Freeman, and I\'m a full-stack developer with a passion for creating intuitive and dynamic web applications.'
}
+export const metadata = _metadata({title: meta.title, heading: meta.title, description: meta.description, type: 'article'})
+
export default (props) =>
Hello there!
diff --git a/app/writing/generating-dynamic-open-graph-images-with-nextjs/page.mdx b/app/writing/generating-dynamic-open-graph-images-with-nextjs/page.mdx
index 8ae6324..b98d301 100644
--- a/app/writing/generating-dynamic-open-graph-images-with-nextjs/page.mdx
+++ b/app/writing/generating-dynamic-open-graph-images-with-nextjs/page.mdx
@@ -2,6 +2,7 @@ import {ArticleLayout} from '../../../components/layouts/ArticleLayout'
import {createSlug} from '../../../lib/createSlug'
import Image from 'next/image'
import ogMetaTags from './open-graph-meta-tags.png'
+import {metadata as _metadata} from '../../../lib/generateMetadata'
export const meta = {
authors: 'Ryan Freeman',
@@ -10,29 +11,13 @@ export const meta = {
description: 'In this post I\'ll talk about how I created dynamic, eye-catching Open Graph images with Next.js for this website.'
}
-export const metadata = {
- ...meta,
- openGraph: {
- title: meta.title,
- description: meta.description,
- images: [
- {
- url: `/api/og-image?text=${meta.title}`,
- width: 1200,
- height: 600,
- alt: meta.title,
- type: 'image/png'
- }
- ],
- type: 'article'
- }
-}
+export const metadata = _metadata({title: meta.title, heading: meta.title, description: meta.description, type: 'article'})
export default (props) =>
In this post I\'ll talk about how I created dynamic, eye-catching Open Graph images with Next.js for this website.
@@ -138,7 +123,7 @@ By exporting the `metadata` object, I was able to specify the Open Graph meta ta
-Lastly, I can verify everything is working correctly by loading the page in the browser.
+Lastly, I can verify everything is working correctly by loading the Services page in the browser and examining the Open Graph meta tags.
## Conclusion
diff --git a/app/writing/migrating-from-vercel-to-raspberry-pi-5/page.mdx b/app/writing/migrating-from-vercel-to-raspberry-pi-5/page.mdx
index ef13198..99a60bd 100644
--- a/app/writing/migrating-from-vercel-to-raspberry-pi-5/page.mdx
+++ b/app/writing/migrating-from-vercel-to-raspberry-pi-5/page.mdx
@@ -1,21 +1,24 @@
import {ArticleLayout} from '../../../components/layouts/ArticleLayout'
import {createSlug} from '../../../lib/createSlug'
+import {metadata as _metadata} from '../../../lib/generateMetadata'
import raspberryPi from './vishnu-mohanan-rZKdS0wI8Ks-unsplash.jpg'
import casaOS from './casaos.png'
import Image from 'next/image'
-export const metadata = {
+export const meta = {
authors: 'Ryan Freeman',
title: 'Migrating from Vercel to Raspberry Pi 5',
date: '2024-08-23',
description: 'Recently, I decided to migrate this website from Vercel to a self-hosted environment using a Raspberry Pi 5. This transition was driven by several motivations, such as lowering costs and having greater control over the software and hardware that I run.'
}
+export const metadata = _metadata({title: meta.title, heading: meta.title, description: meta.description, type: 'article'})
+
export default (props) =>
diff --git a/app/writing/secure-your-websites-with-lets-encrypt-npm-and-cloudflare/page.mdx b/app/writing/secure-your-websites-with-lets-encrypt-npm-and-cloudflare/page.mdx
index 112309e..e476170 100644
--- a/app/writing/secure-your-websites-with-lets-encrypt-npm-and-cloudflare/page.mdx
+++ b/app/writing/secure-your-websites-with-lets-encrypt-npm-and-cloudflare/page.mdx
@@ -1,23 +1,26 @@
import Image from 'next/image'
import {ArticleLayout} from '../../../components/layouts/ArticleLayout'
import {createSlug} from '../../../lib/createSlug'
+import {metadata as _metadata} from '../../../lib/generateMetadata'
import locks from './mariia-shalabaieva-zVC8A0CrTZ0-unsplash.jpg'
import namecheap from './namecheap-change-nameservers.png'
import nginx from './nginx-proxy-manager.png'
import starshipTroopers from './starship-troopers.gif'
-export const metadata = {
+export const meta = {
authors: 'Ryan Freeman',
title: 'Secure your websites with Let\'s Encrypt, NPM and Cloudflare',
date: '2024-09-21',
description: 'SSL/TLS is the encryption standard or protocol which encrypts the session between a website (server) and the browser (client). This protects us from potential man-in-the-middle attacks whereby an attacker could eavesdrop on the session and see all the traffic and data exchanged in the clear.'
}
+export const metadata = _metadata({title: meta.title, heading: meta.title, description: meta.description, type: 'article'})
+
export default (props) =>
diff --git a/app/writing/using-tailscale-to-bypass-steam-families-restrictions/page.mdx b/app/writing/using-tailscale-to-bypass-steam-families-restrictions/page.mdx
index cc032b4..53bb7d6 100644
--- a/app/writing/using-tailscale-to-bypass-steam-families-restrictions/page.mdx
+++ b/app/writing/using-tailscale-to-bypass-steam-families-restrictions/page.mdx
@@ -1,20 +1,23 @@
import {ArticleLayout} from '../../../components/layouts/ArticleLayout'
import {createSlug} from '../../../lib/createSlug'
+import {metadata as _metadata} from '../../../lib/generateMetadata'
import steamLibrary from './024a06f7b503c5ae8f9442ac521e06b9c9bc21e8.png'
import Image from 'next/image'
-export const metadata = {
+export const meta = {
authors: 'Ryan Freeman',
title: 'Using Tailscale to bypass Steam Families restrictions',
date: '2024-09-14',
description: 'This past week, Steam launched Steam Families, which allows Steam account owners to share their game library with up to six members of their family.'
}
+export const metadata = _metadata({title: meta.title, heading: meta.title, description: meta.description, type: 'article'})
+
export default (props) =>
diff --git a/lib/generateMetadata.ts b/lib/generateMetadata.ts
index 6ffb003..bd938f1 100644
--- a/lib/generateMetadata.ts
+++ b/lib/generateMetadata.ts
@@ -6,7 +6,7 @@ type Meta = {
[name: string]: string | Object
}
-export async function generateMetadata(meta: Meta) {
+export const metadata = (meta: Meta) => {
return {
...meta,
openGraph: {
@@ -24,4 +24,8 @@ export async function generateMetadata(meta: Meta) {
type: meta.type
}
}
+}
+
+export async function generateMetadata(meta: Meta) {
+ return metadata(meta)
}
\ No newline at end of file
diff --git a/lib/getAllArticles.ts b/lib/getAllArticles.ts
index 3049f4d..d136bee 100644
--- a/lib/getAllArticles.ts
+++ b/lib/getAllArticles.ts
@@ -2,12 +2,12 @@ import glob from 'fast-glob'
import * as path from 'path'
async function importArticle(articleFilename: string) {
- let {metadata, default: component} = await import(
+ let {meta, default: component} = await import(
`/app/writing/${articleFilename}`
)
return {
slug: articleFilename.replace(/(\/page)?\.mdx$/, ''),
- ...metadata,
+ ...meta,
component,
}
}