MediaWiki 1.26.4 · PHP 7.4 · MySQL 5.7 · 2015

The starting position

  • compromised by pirate accounts
  • an earlier migration started and never finished
  • mixed and missing tables
  • more than one party said: beyond saving

1 / 4 · 57 extensions in view · source: delivery document

  1. MediaWiki 1.26.4, PHP 7.4 · MySQL 5.7 · 2015. The starting position: compromised by pirate accounts; an earlier migration started and never finished; mixed and missing tables; more than one party said: beyond saving.
  2. MediaWiki 1.31, MySQL 8.0. The database, rescued rather than rebuilt: over 8,000 duplicated archive revisions renumbered; revision timestamp index restored; tens of thousands of spam pages and accounts removed; the deletion list checked three times.
  3. MediaWiki 1.35, PHP 8.1. The structure repaired: actor model migration completed; Multi Content Revision tables repaired; change tag, logging, file archive and user talk repaired; more than 4,200 images re-imported.
  4. MediaWiki 1.39.10, PHP 8.3 · SMW 5.1.0. Forty-three extensions, each on PHP 8: the own extensions ported to PHP 8 by hand; execute() signatures, trim(null), manifest_version; in the order of 100,000 semantic entities restored; 26 to 64 times faster on the pages measured.

Services

From the database to the button, by the same person.

I build, migrate, connect and maintain web applications. Full stack here means I design the schema, set up the server, write the code and keep the site running afterwards. No agency, no layers in between, no handover halfway.

Government · Non-profit · Small business · Independents

MIG

Migration and rescue

An outdated system brought up to date in phases, with the data intact rather than rebuilt from nothing.

PHP 8.3 · MySQL 8 · DockerIn full
WIKI

MediaWiki and Semantic MediaWiki

Knowledge bases set up, migrated and extended with custom extensions and a skin of their own.

Semantic MediaWiki 5.1 · PageForms · LuaIn full
APP

Web applications and SaaS

Applications built to fit, several clients in one system, from database schema to production.

TypeScript · Next.js · PostgreSQLIn full
API

Integrations and APIs

An API on a system that has none, or a connection to a register you depend on. With a dry run before anything is written.

REST · GraphQL · SPARQL · KvK · PDOK
SHOP

Shops and websites

Custom themes and fully hand-built sites, connected to stock, fulfilment and invoicing. No bought template.

Shopify · WordPress · Next.js
AUDIT

Audit

Speed, security and accessibility measured with a real browser, with a report and a priority list. Carrying out the work can follow.

Playwright · axe-core · Core Web Vitals
BEHEER

Hosting and maintenance

Hosting for hand-built sites, with updates, backups, certificates and monitoring. One person to talk to instead of a ticket system.

Docker · nginx · VPS
RB/

Where this comes from

MediaWiki since 2008, commercial websites since 2009, government work since 2021. Every figure on this site is in the work inventory with its source beside it.

See the work and the workstation

In full 01 / MIG

An outdated system brought up to date, without losing data.

A site on an old PHP or an old database that nobody dares touch any more. I bring it forward in phases, extension by extension, and repair what is broken in the database along the way. Throwing it away and starting again is almost never necessary and almost always more expensive, because twenty years of editorial work cannot be rebuilt.

Built with

PHP 7.4 to 8.3 · MySQL 5.7 to 8.0 · MediaWiki 1.26.4 to 1.39.10 · PostgreSQL · Docker · nginx · Apache · Bash

What you get

  • A feasibility test first: your site rebuilt offline, before you sign anything
  • A version path in steps, with a working site and a way back after each one
  • Repair of the data itself, and not just the code around it

The art atlas of France ran on MediaWiki 1.26.4 from 2015 and had been compromised. More than one party said it had to go. More than 8.000 duplicated archive revisions renumbered, forty-three extensions carried across, the database repaired in place, repeat page loads 26 to 64 times faster. The site is still there.Delivery document

In full 02 / WIKI

Knowledge bases that last twenty years.

I have worked with MediaWiki since 2008, and since 2021 for government organisations. Setting it up, migrating it, extending it with custom extensions, and arranging the environment around it so editors can carry on without a developer. Few people in the Netherlands take this work on, and it is what I know best.

Built with

MediaWiki LTS · Semantic MediaWiki 5.1 · custom extensions and skins · PageForms · Scribunto and Lua · VisualEditor · AbuseFilter · OATHAuth · jobrunner

What you get

  • Access control, custom namespaces and two factor authentication
  • Custom extensions and a skin, rather than loose changes in the core
  • Clean-up work: spam pages, duplicate revisions, broken media and search indexes

Six custom extensions and a skin built for one client: an API layer of 5.215 lines, a quality dashboard that scores 4.600 notes, a bulk repair with a dry run, a status page, a map synchronisation and an enrichment from Wikidata.Delivery document and repository

In full 03 / APP

Applications built to fit, from empty screen to production.

An application that does exactly what your work asks, instead of a package you have to work around. Several clients in one system, roles and rights, invoicing, documents, an audit trail. The rules of the trade go into the database rather than into application code, so nobody can work around them later by accident.

Built with

TypeScript · Next.js App Router · React · Node.js · PostgreSQL · row-level security · Docker · Playwright · Vitest

What you get

  • A working application delivered in phases, every phase usable
  • A database schema that holds your rules, with migrations
  • Tests that run on every change, and the code in your own repository

Under construction now: a multi-tenant platform for the funeral trade with 46 tables, 29 migrations, 119 SQL tests and 24 screens, four production dependencies, and Dutch funeral law held as constraints in the database. Not yet launched, which is why it is described without a name.Own account

On the bench

What is under construction right now.

In development

Multi-tenant SaaS, funeral trade

Case files, suppliers, invoicing, members and policies, with row-level security on every table. Not yet launched, which is why it has no name here.

In development

Blokpunt, the wallet beside DigiD

My own product. Public organisations have to accept the European identity wallet by the end of 2026, alongside the DigiD connections they already have.

Running live

This platform

The site you are reading is the front of a measuring system. Every measurement enters a hash chain, and the architecture rules are enforced by a test.

The stack

What I work with.

Front-end

TypeScript · React · Next.js App Router · server components · CSS with design tokens · Tailwind · shadcn/ui · WebGL2 · canvas · WCAG 2.2 AA

Back-end and data

PHP 8.3 · Node.js · REST · GraphQL · custom API layers · queues and background workers · PostgreSQL · MySQL 8 · migrations · row-level security · constraints and triggers · indexes and query plans · SKIP LOCKED · outbox · Drizzle · Bash

Wiki platform

MediaWiki LTS · Semantic MediaWiki 5.1 · custom extensions · custom skins · PageForms · Scribunto and Lua · VisualEditor · AbuseFilter · OATHAuth · maintenance scripts

Shop and CMS

Shopify · Shopify REST and GraphQL · WordPress · WooCommerce · Joomla · e107 · IP.Board

Infra, testing, measuring

Docker and docker compose · nginx · php-fpm · Apache with FastCGI · VPS · Coolify · TLS and HSTS · Content Security Policy · Vitest · Playwright with Chromium · SQL tests · axe-core · Chrome DevTools Protocol · Core Web Vitals · dependency-cruiser

Integrations

Wikidata and SPARQL · KvK API · PDOK and BAG · Peppol and EN16931 · Mollie · Resend · iCal · DigiD · eIDAS 2.0 and the EUDI wallet

The route

How a project runs, and what it costs.

  1. 01Conversation

    An hour on what is there and what it has to become. Free of charge.

  2. 02Feasibility test

    For a migration I rebuild your environment offline first. Also free of charge.

  3. 03Quote per phase

    A fixed price per phase, with what you get in each one. No open end.

  4. 04Building

    In steps, with something working to look at after each one.

  5. 05Delivery

    Documentation, tests and handover. Maintenance per month if you want it.

Questions that keep coming

Before you ask them.

Who owns the code when it is finished?

You do. The code sits in your own repository with its full history. At delivery you also get the documentation, the running tests and access to server, database, domain and certificates, plus a handover that says what is not finished yet.

How long does a migration take?

That depends on what is in the database, and nobody knows that in advance. So I rebuild your environment offline first. After that test I know which steps are needed and can give a schedule that holds.

What if a project turns out larger than expected?

Then I stop and we talk before more hours go into it. Working in phases exists for this: after each phase there is something that works and you can decide whether we continue.

What do you not do?
  • No ready-made templates sold as bespoke work
  • No work whose result I cannot measure
  • No hosting for sites someone else made in a page builder
  • No commission or margin on third party products
  • No claim on this site without a source in the work inventory
Do you work on site?

Most of the work happens remotely and that works well. For an intake, a delivery or a difficult session I come over when that is better.

Also available via rbck.nl

Reliable hosting for SMEs

Alongside custom projects, I offer competitively priced, personal hosting for small entrepreneurs and SMEs via rbck.nl. No unnecessary frills or endless packages. Just fast, secure hosting with support from someone who actually understands your website.

  • Personal contact, no ticket system
  • Transparent pricing, no surprises
  • For fully custom-built websites, no ready-made CMS templates

Explore Infrastructure

rbck.nl · tailored hosting