This is the code that generates my website. It is based on the TypeScript blog-starter provided by Next.js, which uses the static generation feature.
Markdown files are turned into new blog posts or articles on the website. This is done with remark
and remark-html
to convert the Markdown files into an HTML string, and remark-prism
along with a custom plugin to handle code blocks. The metadata from the Markdown files is handled by gray-matter
. All of this gets passed down as props to the React components.
The non-post parts of the website were designed and built from scratch.
Comments are powered by giscus via the provided React component.
Styling and responsiveness is handled by Tailwind CSS.
Icons are from Font Awesome, except the social share buttons, which come from react-share
.
Tweet embeds are done with react-tweet
.
The images distributed in this repository are a combination of my own images, free images from Unsplash.com, and AI-generated images I created on NightCafe.