MediaWiki 1.26.4 · PHP 7.4 · MySQL 5.7 · 2015

De uitgangssituatie

  • gecompromitteerd door piratenaccounts
  • een eerdere migratie begonnen en nooit afgemaakt
  • gemengde en ontbrekende tabellen
  • meer dan één partij zei: niet te redden

1 / 4 · 57 extensies in beeld · bron: opleverdocument

  1. MediaWiki 1.26.4, PHP 7.4 · MySQL 5.7 · 2015. De uitgangssituatie: gecompromitteerd door piratenaccounts; een eerdere migratie begonnen en nooit afgemaakt; gemengde en ontbrekende tabellen; meer dan één partij zei: niet te redden.
  2. MediaWiki 1.31, MySQL 8.0. De database, gered en niet herbouwd: ruim 8.000 gedupliceerde archiefrevisies hernummerd; revisie-tijdstempelindex hersteld; tienduizenden spampagina's en accounts verwijderd; de verwijderlijst drie keer nagelopen.
  3. MediaWiki 1.35, PHP 8.1. De structuur hersteld: actor-modelmigratie voltooid; Multi Content Revision-tabellen hersteld; change tag, logging, file archive en user talk gerepareerd; meer dan 4.200 afbeeldingen opnieuw ingelezen.
  4. MediaWiki 1.39.10, PHP 8.3 · SMW 5.1.0. Drieënveertig extensies, elk op PHP 8: de eigen extensies met de hand op PHP 8 gezet; execute() signatures, trim(null), manifest_version; in de orde van 100.000 semantische entiteiten hersteld; 26 tot 64 keer sneller op de gemeten pagina's.

Diensten

Van de database tot de knop, door dezelfde persoon.

Ik bouw, migreer, koppel en beheer webapplicaties. Full stack betekent bij mij dat ik het schema ontwerp, de server inricht, de code schrijf en de site daarna blijf draaien. Geen bureau, geen tussenlagen, geen overdracht halverwege.

Overheid · Non-profit · MKB · Zelfstandigen

MIG

Migratie en redding

Een verouderd systeem in fasen naar deze tijd, met de data intact in plaats van opnieuw opgebouwd.

PHP 8.3 · MySQL 8 · DockerUitgelicht
WIKI

MediaWiki en Semantic MediaWiki

Kennisbanken opzetten, migreren en uitbreiden met eigen extensies en een eigen skin.

Semantic MediaWiki 5.1 · PageForms · LuaUitgelicht
APP

Webapplicaties en SaaS

Applicaties op maat, meerdere klanten in een systeem, van databaseschema tot productie.

TypeScript · Next.js · PostgreSQLUitgelicht
API

Koppelingen en API's

Een eigen API op een systeem dat er geen heeft, of aansluiten op een register dat je nodig hebt. Met een droge run voordat er iets geschreven wordt.

REST · GraphQL · SPARQL · KvK · PDOK
SHOP

Webshops en websites

Maatwerk thema's en volledig zelfgebouwde sites, gekoppeld aan voorraad, fulfilment en facturatie. Geen gekochte template.

Shopify · WordPress · Next.js
AUDIT

Doorlichting

Snelheid, beveiliging en toegankelijkheid gemeten met een echte browser, met een rapport en een prioriteitenlijst. Uitvoeren kan daarna.

Playwright · axe-core · Core Web Vitals
BEHEER

Hosting en onderhoud

Hosting voor zelfgebouwde sites, met updates, back-ups, certificaten en monitoring. Een vast aanspreekpunt in plaats van een ticketsysteem.

Docker · nginx · VPS
RB/

Waar dit vandaan komt

Sinds 2008 MediaWiki, sinds 2009 commerciele websites, sinds 2021 voor de overheid. Elk cijfer op deze site staat in de werkinventaris, met de bron erbij.

Zie het werk en het werkstation

Uitgelicht 01 / MIG

Een verouderd systeem naar deze tijd, zonder dataverlies.

Een site op een oude PHP of een oude database, waar niemand meer aan durft te komen. Ik breng hem in fasen bij, extensie voor extensie, en repareer onderweg wat er in de database stuk is. Weggooien en opnieuw bouwen is bijna nooit nodig en bijna altijd duurder, omdat twintig jaar redactiewerk zich niet laat herbouwen.

Waarmee

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

Wat je krijgt

  • Vooraf een haalbaarheidstest: jouw site offline nagebouwd, voordat je iets tekent
  • Een versiepad in stappen, met na elke stap een werkende site en een terugweg
  • Reparatie van de data zelf, niet alleen van de code eromheen

De kunstatlas van Frankrijk stond op MediaWiki 1.26.4 uit 2015 en was gehackt. Meerdere partijen zeiden dat hij weg moest. Ruim 8.000 gedupliceerde archiefrevisies hernummerd, drieenveertig extensies mee, de database ter plekke gerepareerd, herhaalde paginalading 26 tot 64 keer sneller. De site staat nog.Opleverdocument

Uitgelicht 02 / WIKI

Kennisbanken die twintig jaar meegaan.

MediaWiki doe ik sinds 2008, en sinds 2021 voor overheidsorganisaties. Opzetten, migreren, uitbreiden met eigen extensies, en de omgeving eromheen inrichten zodat redacteuren er zonder ontwikkelaar mee verder kunnen. Dat is werk waar in Nederland weinig mensen aan beginnen, en het is waar ik het meeste van weet.

Waarmee

MediaWiki LTS · Semantic MediaWiki 5.1 · eigen extensies en skins · PageForms · Scribunto en Lua · VisualEditor · AbuseFilter · OATHAuth · jobrunner

Wat je krijgt

  • Toegangsbeheer, naamruimtes op maat en tweefactorauthenticatie
  • Eigen extensies en een eigen skin, niet losse ingrepen in de kern
  • Opruimwerk: spampagina's, dubbele revisies, kapotte media en zoekindexen

Zes eigen extensies en een skin gebouwd voor een klant: een API-laag van 5.215 regels, een kwaliteitsdashboard dat 4.600 notities scoort, een bulkreparatie met droge run, een statuspagina, een kaartsynchronisatie en een verrijking uit Wikidata.Opleverdocument en repository

Uitgelicht 03 / APP

Applicaties op maat, van leeg scherm tot productie.

Een applicatie die precies doet wat jouw werk vraagt, in plaats van een pakket waar je omheen moet werken. Meerdere klanten in een systeem, rollen en rechten, facturatie, documenten, een auditspoor. De regels van het vak leg ik vast in de database in plaats van in applicatiecode, zodat niemand er later per ongeluk omheen kan werken.

Waarmee

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

Wat je krijgt

  • Een werkende applicatie in fasen opgeleverd, elke fase bruikbaar
  • Een databaseschema waarin jouw regels vastliggen, met migraties
  • Tests die bij elke wijziging draaien, en de code in jouw eigen repository

Nu in aanbouw: een meertenant platform voor de uitvaartbranche met 46 tabellen, 29 migraties, 119 SQL-tests en 24 schermen, vier productie-afhankelijkheden, en de Wet op de lijkbezorging als constraint in de database. Nog niet gelanceerd, daarom zonder naam beschreven.Eigen opgave

Op de werkbank

Wat er op dit moment in aanbouw is.

In ontwikkeling

Meertenant SaaS, uitvaartbranche

Dossiers, leveranciers, facturatie, leden en polissen, met row-level security op elke tabel. Nog niet gelanceerd, daarom zonder naam.

In ontwikkeling

Blokpunt, de wallet naast DigiD

Eigen product. Publieke organisaties moeten de Europese identiteitswallet eind 2026 kunnen accepteren, naast de DigiD-koppelingen die ze al hebben.

Draait live

Dit platform

De site die je nu leest is de voorkant van een meetsysteem. Elke meting komt in een hashketen, de architectuurregels worden afgedwongen door een test.

De stack

Waar ik mee werk.

Front-end

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

Back-end en data

PHP 8.3 · Node.js · REST · GraphQL · eigen API-lagen · wachtrijen en achtergrondwerkers · PostgreSQL · MySQL 8 · migraties · row-level security · constraints en triggers · indexen en queryplannen · SKIP LOCKED · outbox · Drizzle · Bash

Wiki-platform

MediaWiki LTS · Semantic MediaWiki 5.1 · eigen extensies · eigen skins · PageForms · Scribunto en Lua · VisualEditor · AbuseFilter · OATHAuth · maintenance-scripts

Shop en CMS

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

Infra, testen, meten

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

Koppelingen

Wikidata en SPARQL · KvK API · PDOK en BAG · Peppol en EN16931 · Mollie · Resend · iCal · DigiD · eIDAS 2.0 en de EUDI-wallet

Het traject

Hoe een opdracht loopt, en wat het kost.

  1. 01Gesprek

    Een uur over wat er is en wat het moet worden. Kosteloos.

  2. 02Haalbaarheidstest

    Bij een migratie bouw ik je omgeving eerst offline na. Ook kosteloos.

  3. 03Offerte per fase

    Een vaste prijs per fase, met per fase wat je krijgt. Geen open eind.

  4. 04Bouwen

    In stappen, met na elke stap iets dat werkt en dat je kunt bekijken.

  5. 05Oplevering

    Documentatie, tests en overdracht. Beheer per maand als je dat wilt.

Vragen die vaker komen

Voordat je ze stelt.

Van wie is de code als het klaar is?

Van jou. De code staat in jouw eigen repository, met de volledige geschiedenis. Bij oplevering krijg je ook de documentatie, de draaiende tests en de toegang tot server, database, domein en certificaten, plus een overdracht waarin staat wat er nog niet af is.

Hoe lang duurt een migratie?

Dat hangt af van wat er in de database zit, en dat weet niemand vooraf. Daarom bouw ik je omgeving eerst offline na. Na die test weet ik welke stappen nodig zijn en kan ik een planning geven die klopt.

Wat als een project groter blijkt dan gedacht?

Dan stop ik en overleg ik voordat er meer uren in gaan. Werken in fasen is daarvoor bedoeld: na elke fase is er iets dat werkt en kun je besluiten of we doorgaan.

Wat doe je niet?
  • Geen kant-en-klare templates verkopen als maatwerk
  • Geen werk waarvan ik het resultaat niet kan meten
  • Geen sites hosten die door iemand anders in een pagebuilder zijn gemaakt
  • Geen provisie of marge op producten van derden
  • Geen bewering op deze site zonder bron in de werkinventaris
Werk je op locatie?

Het meeste werk gebeurt op afstand en dat werkt goed. Voor een intake, een oplevering of een lastige sessie kom ik langs als dat beter is.

Ook beschikbaar via rbck.nl

Betrouwbare hosting voor het MKB

Naast maatwerkprojecten bied ik via rbck.nl scherp geprijsde, persoonlijke hosting voor kleine ondernemers en het MKB. Geen overbodige poespas of eindeloze pakketten. Wel snelle, veilige hosting met support van iemand die uw website ook daadwerkelijk begrijpt.

  • Persoonlijk contact, geen ticketsysteem
  • Transparante prijzen, geen verrassingen
  • Voor volledig zelfgebouwde websites, geen kant-en-klare CMS-templates

Bekijk de hosting

rbck.nl · hosting op maat