Building a portfolio without a framework

"Is there no React on this site?" No — and I see that as a deliberate choice rather than a gap. Here's my reasoning.

Defining the problem first

Anyone landing here wants to do three things: browse projects, learn a bit about me, and get in touch. That's a content site. There's no realtime data, no user accounts, no complex interaction. List the requirements and something very clear emerges: pages that load fast, run anywhere and are easy to update.

What would a framework have bought me?

Honestly: less component repetition, consistency across large teams, and real help on state-heavy interfaces. Those are genuine advantages. But for this project every one of them was either unnecessary or too expensive.

  • A showcase site barely has any state — just a filter and a menu.
  • There is repetition, but the file count is around twenty; copying a template beats a bundler for readability.
  • There's no large team. It's just me.

What plain HTML/CSS/JS bought me

1. Speed

Pages aren't built, they're served. There's no runtime bundle to download — the only script is a few KB handling the filter and the menu. You notice the difference on a slow phone connection.

2. Portability

You can drop this folder anywhere: GitHub Pages, Netlify, your own server, even a USB stick. No dependencies, no install, no version conflicts. It even works by double-clicking index.html.

3. Longevity

A framework's API can change in five years, or the project itself can stall. HTML and CSS work today exactly as they did a decade ago. For a portfolio — something you'd rather not revisit — that matters.

4. Learning

When you write everything yourself you know what every line does. Animation, responsive layout and accessibility stay visible instead of hiding behind an abstraction.

And the drawbacks?

The same <header> block is repeated in every file — change one page and you should check the others. That work grows as content does. Managing repetition without a template engine isn't practical for a large content site either.

The rule is simple: little content and little interaction — plain web technologies. Lots of content, a big team, complex state — then consider a framework.

Conclusion

Apart from the filter, the menu, the language switch and the contact form, this site barely contains any JavaScript. Everything else is stuff the browser already understands. Sometimes the best tool isn't a new tool — it's knowing exactly what the one in your hand can do.

Browse the projects section for details, or write to me if you have an idea.