Programming services · Websites

The second version: rebuilding my own website

Personal project · IT / software services

The challenge

The first version of this site was born out of courage. I wrote about it separately – about the perfectionism that kept me stuck, and about finally hitting „publish”. I built it on WordPress with Elementor, because at the time that was the sensible choice: fast, visible results, move on.

But a website lives alongside the person running it. After a dozen or so client projects, I started looking at my own site differently. I saw things I had not seen before: that the layout came from a template, not from an idea. That the content was there, but it did not say what I wanted to say. That if I got myself as a client today, I would advise something else.

Two practical things came on top. First – two languages. I wanted the English version to be equal, not bolted on. Second – content from the dashboard. I did not want to open code every time a price changes or a new case study lands.

What I did

I dropped Elementor and wrote the theme from scratch. That was a deliberate decision, not a whim. For a client business-card site Elementor is often fine – I wrote about that in my guide on choosing a theme. But this site is my portfolio: it has to be light, it has to look the way I want, and it has to show I can do more than assemble blocks.

The foundation is a custom WordPress theme: my own templates for the front page, service pages, case studies and the blog. No page builder, no dead code nobody will use. Only the styles and scripts the site actually needs.

I moved the content into ACF fields – every heading, lead, package or process step is edited from the dashboard, without touching code. It looks like the projects I build for clients: you open a page and see clear, labelled fields, not a maze of blocks.

The two languages run on Polylang. Every page, case study and post has its English counterpart, linked as a translation. Menus, the language switcher, buttons – everything leads where it should, without getting lost between versions.

A few things appeared that were not there before: a separate content type for case studies (with a filter by service type), a visual gallery of live websites with a carousel, review sections, care packages. And small details nobody notices until they are missing – like automatically tying up orphan words, or the brand-colour accent in headings:

// Nagłówek z akcentem: *słowo* dostaje kolor marki
function mt_acc_heading( $text ) {
    if ( strpos( $text, '*' ) !== false ) {
        return preg_replace( '/\*(.+?)\*/u', '<em class="acc">$1</em>', esc_html( $text ) );
    }
    // bez gwiazdek: akcent na ostatnim słowie
    return mt_orphans( $text );
}

Most of the work, though, went not into the code but into the content. I went through it page by page, case study by case study. I threw out everything that sounded like a template and wrote what I actually want to say – concretely, without hedging, with numbers where there are any. Every text got its English version and its own SEO.

The result

The site is lighter, faster and finally mine – not assembled from a template, but built around what I do. The English version is equal, not bolted on. I change content from the dashboard in a minute.

But the most important part is something else. This rebuild is proof of what I keep telling clients: a website is a process, not a monument. The first version was not a mistake – it was a good first step that did its job for years. The second one exists because I outgrew the first. And one day there will probably be a third.

If you are wondering whether your site needs a rebuild – the answer is usually: not yet. It is worth doing when the site starts getting in your way, not when a new trend shows up. For me, that moment simply came. I told the story of the first version here.

Back to work

Got a project to talk about?

Just tell me what you need - it does not have to be technical, that is my job. I will get back to you and tell you straight whether and how I can help.