Skip to content

Why a Blog?!

In this post I explain why I decided to start a blog in the middle of 2025

Why start a blog in the middle of 2025?

Well, I’ve never really been one to consume blog content, but lately I’ve been trying to get off social media. As a result, I end up reading a lot of blogs… I see this as an opportunity to have my own space, where I can say whatever I want, write however I want, without worrying about algorithms, comments, or whatever else. Here, I’ll share my knowledge, thoughts, cool projects, and much more…

What was I trying to build?

I’m a huge fan of the format/layout of project documentation sites, à la Better Auth. So, before building my blog, I went on a long journey to figure out how those sites are made, and drawing inspiration from them, I built my own version completely from scratch.

Complete with a sidebar menu, a Table of Contents (TOC), and much more, I wrote the documentation for a few different projects, and in doing so, I tested the tool quite a bit, running it for about 60 days at work.

In the future, I’ll write a dedicated post about it.

Now, I decided to adapt the logic to work on a blog, turning the documentation layout into a blog, which was actually as simple as removing the sidebar and header.

From there, I started adding my fluid, personal visual signature, like that lovely page Navigation on your right (if you’re on a computer), with simple, fluid animations, that scroll indicator on the left, super simple and fluid, as well as several other simple, fluid details and animations that make all the difference. Want another example? Reload the page and watch that subtle blur before the content is revealed.

Which technologies did I use?

After all, this is a dev’s blog, so I can’t skip talking about the technology used to build it.

Vite

Ultra-fast build tool for frontend development

React

Library for user interfaces

Tailwind CSS

Utility-first CSS framework

Motion

Animation library for React

Shadcn UI

Reusable UI components

Aceternity UI

Modern visual components

MDX

Markdown with JSX for rich content

Noticed there’s no backend? That’s because there really isn’t one, and I’ll explain why in a second.

Are the posts dynamic?

Yes and no. All posts are written in Markdown using MDX, and are stored directly in the project’s code, much like the library docs I mentioned earlier.

Even though all the React content you’re seeing right now was rendered at runtime, they aren’t dynamic in the sense that I can edit them instantly at any moment, but they are dynamically processed at runtime.

Why did I do it this way?

Simple: since this is a personal blog, and I’m the one writing the posts, I prefer to write this way. That way, I also don’t have to worry about login security, databases, etc., for a project that doesn’t require those features.

How does reading and processing MDX files work?

Writing the Posts

Posts are written in .mdx files inside the src/content/blog/ folder. Each file contains frontmatter (metadata) and the content in Markdown with JSX.

Automatic Importing

During the build, Vite uses import.meta.glob to automatically import all .mdx files, creating an object with all the available posts.

Real-Time Processing

When you visit a page, the MDX is processed by React at runtime, converting Markdown + JSX into functional React components.

Final Rendering

The custom MDX components (like Note, Step, Card) are applied, along with the Tailwind styles, resulting in the page you see.

This approach is perfect for personal blogs: simple, secure, and it lets you use all the power of React in your posts without unnecessary complexity.

Whether it's a product to build from scratch, a system that needs rescuing or an idea that still fits in a paragraph, tell me about it and I will get back to you.

Send me an email
or find me on

oi@antmiranda.dev