Building a PHP Blog Platform with Symfony


Table of Contents

I decided to try building my own blog platform using PHP and Symfony instead of dealing with Hugo’s maintenance headaches. It was also a good excuse to get better at PHP since I use it at work.

Motivation #

This site currently runs on Hugo , and honestly, it’s been a pain to maintain:

I started thinking - why not just build my own thing from scratch and avoid all this third-party dependency mess?

Implementation approach #

1. Tech Stack #

2. How it went #

It was surprisingly quick to get something working! PHP is just really good at spitting out web content, and Symfony made everything feel organized. I managed to recreate most of my blog’s functionality in about a day, keeping the same LaTeX.css styling so it looked identical.

What worked well:

Why I abandoned it #

1. Security headaches #

Auth is overkill: Setting up proper authentication for just me to edit posts felt like way too much work and risk for a simple blog.

Deployment mess: I’d need to deploy two versions - one with admin stuff for me, and a clean public version. Or I’d have to secure admin endpoints properly, which means exposing my server, adding MFA, the whole nine yards. Too much hassle.

2. Feature gaps #

Basic editor: The editor I built was pretty basic. I wanted rich text editing, but that means more dependencies and more things to maintain.

Performance reality check: A dynamic site just can’t compete with static files when it comes to speed and security. Static sites are just… simpler.

What I learned #

Symfony is actually pretty great: Even though I didn’t stick with it for the blog, Symfony impressed me. It’s well-designed and makes web development feel smooth.

Right tool for the job: For a simple blog that I update occasionally, static generation just makes more sense. But for actual web apps with users, databases, and complex features? Symfony would be my go-to.

PHP development velocity: I forgot how fast you can move with PHP for web stuff. The feedback loop is immediate and satisfying.

What’s next #

Even though I went back to Hugo (for now), I’m glad I spent time with Symfony. I’ll definitely reach for it on my next web project that actually needs a backend. Sometimes the best way to appreciate what you have is to try building an alternative!

For now, I have updated my process to write blogs by using Obsidian to write the markdown and adding some make commands to manage Hugo operations.