Putting sleda.dev together

I wanted a simple portfolio with somewhere to put my writing. I keep posts in MDX files because I don't want to manage a separate admin panel just to change some text.


Next.js builds the pages, next-mdx-remote renders the posts, and Shiki highlights code blocks. Adding a post means creating a file with a title, date and the text.

Working on the site

The project uses Next.js 15, with Turbopack for the development server. I change a post or component and check it in the browser. For a site this size, keeping it easy to add content matters most to me.

Share images are generated by the routes under /og, so I don't have to make a separate image for every post.

I went with a monospace font and starred section headings. The home page has work, writing and projects. I can add more later; for now, I want it to be easy to find something and read it.

How a file becomes a post

Turkish posts live under posts/tr, English posts under posts/en. Both versions use the same filename, for example navly-rag.mdx. That filename also becomes the final part of the URL.

Each file starts with the title, date and other metadata:

CODEMarkdownFrontmatter
---
title: "A post title"
description: "A short explanation of what the post covers."
date: "2026-11-04"
---

The first paragraph of the post.

That section is called frontmatter. The blog list reads the title and date from it; the post page renders the text underneath. Changing a title in the file updates both places.

MDX lets me use React components inside Markdown. This project defines rendering components for code blocks and tables. I can use those shared pieces instead of putting the presentation into each post separately.

The limit is that content lives in the filesystem. I don't publish through a browser form; editing a post means changing a source file. That's enough for my personal site. For a publication with multiple editors, I'd think about content management separately.