How I built my own blog in hours: Next.js vs. Traditional Platforms

TL;DR
Introduction
I like rapid prototyping. I like to build fast and iterate faster. When I needed to add a blog to my website, I faced the classic dilemma—use an existing platform or build something custom? After a look at Hugo1, I realized integrating something similar into my existing Next.js website would be just as, if not more, efficient.
In this post, I go over why I did it this way and why moving quickly is preferable in certain situations. In this case, I went from idea to having it live on my website in under a day.
Why custom over existing solutions?
The decision came down to one simple factor: integration. My website was already built with Next.js 15, and starting a completely separate blog would mean:
- Maintaining two different systems
- Managing two different deployment pipelines
- Dealing with inconsistent styling and branding
The rapid prototyper in me saw an opportunity. I could leverage my existing codebase and integrate blog functionality directly. This meant:
- Working quickly with familiar tools
- Consistency across my entire online presence
- Building exactly what I needed—no more, no less
- Full control over implementation and future features
This is the essence of MVP thinking—identify the core need and implement the simplest solution that satisfies it completely.
Technical stack
Since I was integrating with my existing website, I continued using the same foundation:
- Next.js 15: For server-side rendering, routing, and structure
- TypeScript: For type safety and better developer experience
- Tailwind CSS: For rapid styling without custom CSS
This existing setup meant zero time spent on configuration—I could jump straight into implementing the blog.
Implementation process
Homepage and navigation structure
I started by designing how the blog would fit into my site's architecture:
- Added a section to the homepage showing 4 most recent posts
- Created a
/posts
index page listing all blog posts - Implemented individual post pages following
/posts/yyyy/mm/dd/slug
for clean URLs
This structure provides multiple entry points to my content while maintaining a logical organization.
Content management with markdown
For content management, I chose markdown files with YAML frontmatter2 —a technique I borrowed from Hugo. Each blog post is a separate file with metadata at the top:
---
date: 2025-05-01
title: "How I built my own blog in hours: Next.js vs. Traditional Platforms"
tags: ['mvp development', 'rapid prototyping', 'blogging', 'personal branding', 'web development']
---
Content of the post goes here...
This approach has several advantages:
- Writing in markdown is fast and distraction-free
- Version control through Git works perfectly with text files
- YAML frontmatter provides structured metadata
- Adding a new post is as simple as creating a new file
The parser system
The core of the blog system is a parser that:
- Reads markdown files from a designated folder
- Extracts and processes the YAML frontmatter
- Converts the markdown content to HTML
- Generates SEO components based on the metadata
- Passes everything to React components for rendering
This system makes the blog truly automatic—add a new markdown file, and it appears everywhere it needs to: the homepage, the posts index, and as its own dedicated page.
Challenges and solutions
Working with familiar tools has many upsides, which means the implementation has been smooth sailing. Borrowing the YAML frontmatter from Hugo proved to be an excellent decision, giving me structured metadata alongside content without reinventing the wheel.
The two biggest potential challenges were parsing markdown and converting it to styled HTML, and ensuring a perfect score for google's metric.
The former was simplified by using existing libraries that handle the conversion while preserving markdown features. By using remark3, I could parse the markdown content and transform it into HTML with just a few lines of code. The plugin ecosystem around remark made it easy to add text styling, generate tables, and handle image processing—all without building these features.
The latter needed a bit of testing to see what were the things google ran into, but none of those were actually an issue. A score of 100 on all four benchmarks is all I can ask for. You can verify it yourself if you want.
The MVP features
The key for rapid prototyping is focusing on the core features needed. This means weeding through the desires you might have for the tool and pushing everything you do not directly need to the future. If those features become important, they will come up later. When they do, you can prioritise them at that point. For the initial version of my blog, I focused on the following:
- Full Markdown Support: All standard markdown syntax works out of the box
- Simple File-Based System: Adding a post is as simple as creating a new file
- Automatic SEO Generation: Title tags, meta descriptions, and Open Graph data generate automatically
- Multiple Entry Points: Recent posts on homepage, complete index, and individual post pages
The beauty of this approach is its simplicity—no database to manage, no CMS to learn, no separate system to maintain. One file, one post.
Future roadmap
While the current implementation meets my needs, an MVP is just that, a minimum viable product. Some of the functionality that I would want, but pushed out of the MVP, are:
- Search Functionality: Letting visitors search through posts. This is useful, however, a blog with less than 20 articles does not warrant a search function.
- Tag-Based Filtering: Enabling navigation by tags. Similar to the search function, this is useful for bigger blogs. What I did implement from the start are the tags itself. They were simple to add and will save me the trouble of back-filling older articles later.
- Related Posts: Suggesting similar articles based on tags or content. This is a good feature to keep people engaged, but only makes sense if there is enough content—clearly not for an MVP.
- Automatic Table of Contents: For longer articles, having a table of contents makes it easier to browser the article at a glance. The Markdown headers allow for easy navigation, so implementation could be brief.
- RSS Feed: Creating an RSS feed for people to follow along with new posts.
- Newsletter Integration: Adding subscription options. This requires a newsletter to start, something I do not have yet.
The key here is that I don't need all these features to launch—I identified the core functionality and implemented that first, allowing me to start publishing immediately. Once the features become relevant, or I feel like building something, I can add them.
Lessons in rapid prototyping
This project reinforced my believe in several key principles:
-
Focus on core functionality
By identifying the absolute essentials—displaying markdown content with appropriate routing and navigation—I built a functional blog system in just a few hours. Everything else can be added incrementally as needed.
-
Leverage existing solutions
Borrowing the YAML frontmatter approach from Hugo saved me from designing a metadata system from scratch. Don't reinvent the wheel when you can learn from established patterns.
-
Use what you know
By sticking with my existing tech stack, I eliminated the learning curve that would have come with adopting a new platform. This allowed me to move much faster than I would have otherwise.
-
Iterate quickly
The initial implementation took about 3 hours, and I spent another 3 hours refining it. This rapid iteration cycle means I can start publishing content while continuing to improve the platform.
Conclusion
Building a custom blog for my Next.js website proved to be the right choice for my needs. In about 6 hours of development time, I went from concept to a fully functional system that lets me publish content easily while maintaining complete control.
This project shows my approach to development—build fast, focus on core functionality, and iterate based on real needs rather than hypothetical features. It's this philosophy that helps me deliver results quickly for both personal projects and client work.
If you're facing a similar challenge—needing custom functionality without the overhead of learning new systems—let's talk. My approach to rapid prototyping might be exactly what your next project needs.
Ready to see more examples of my rapid prototyping work? Stay tuned for upcoming posts.
Footnotes
-
Hugo is a popular static site generator that uses a similar approach for content management. https://gohugo.io/↩
-
YAML (YAML Ain't Markup Language) frontmatter is a method of adding metadata to markdown files. Learn more: https://jekyllrb.com/docs/front-matter/↩
-
Remark is a popular markdown processor powered by plugins that's built on unified, a content processing ecosystem. https://github.com/remarkjs/remark↩