When I started thinking about building a portfolio, the obvious options were all there — WordPress, Squarespace, a GitHub Pages template. They're fast, they look fine, and plenty of developers use them. So why didn't I?
The Simple Answer
I'm a programmer. Building things is what I do. Using a drag and drop site builder for my own portfolio felt like a mechanic buying a car instead of building one — technically fine, but missing the point entirely.
The Real Answer
A template tells a visitor what you know how to use. A custom build tells them what you know how to make. Those are very different signals.
My portfolio isn't just a place to list projects — it's a project itself. The fact that it runs on a custom Flask backend, uses a MySQL database, has a built in CMS and kanban board system, and is deployed on my own VPS says more about my abilities than any resume bullet point could.
What I Actually Built
The stack ended up being:
- Python + Flask for the backend
- MySQL for the database in production, SQLite locally
- SQLAlchemy for database models
- Jinja2 for templating
- Vanilla HTML, CSS, and JavaScript for the frontend
- SortableJS for drag and drop kanban boards
- Gunicorn as the production WSGI server
- Plesk on a self managed VPS for hosting
No frameworks, no site builders, no shortcuts.
The Tradeoffs
It took longer. A WordPress site could have been live in an afternoon. This took considerably more time — setting up Flask, designing the database schema, building the admin panel, debugging deployment issues.
But every problem I ran into taught me something. The deployment process alone covered nginx reverse proxying, systemd services, environment variables in production, and the difference between SQLite and MySQL in a real world context.
Would I Recommend It?
If you're a developer — yes, absolutely. The process of building your portfolio is as valuable as the portfolio itself. You learn things you wouldn't learn any other way, and you end up with something that is genuinely yours.
If you just need something live quickly and the focus is on showcasing design or non-technical work — use a template. There's no shame in picking the right tool for the job.
For me, building it myself was the right tool for the job.