Media platform · Migration · Ongoing engineering

A new publishing platform for a newsroom facing cyberattacks.

We built a new website for Novosti Donbasu, developed tools to migrate its archive and took an active part in defending the platform against attacks from launch.

Project overview

Our role
Platform development, migration tools, attack defence and ongoing support
Foundation
WordPress · Adapted theme and custom modules
Operations
Caddy · MySQL · Redis · Cloudflare Tunnel
01

The newsroom

A platform for the newsroom’s daily work.

Development of the new site was already underway when the legacy website was compromised and subsequently lost. We adapted WordPress to the newsroom’s publishing workflow: language versions, navigation, article templates and the editing interface. Alongside the public website, we developed tools to prepare and import the existing archive.

Novosti Donbasu article index with Ukrainian navigation and an editorial grid.
  • 01Multilingual publishing
  • 02Editorial tools
  • 03Custom modules
02

Legacy content

Custom tools for migrating the archive.

The old archive used a different content structure. Publication types, languages, tags and images needed to be mapped to WordPress fields. We built preparation scripts and a custom import plugin with a preview mode, options to create or update publications, and control over which fields to change. Imports run in batches and record their actions in a log. A separate component uses original publication IDs to handle legacy links.

Migration tooling — simplified data flow

  1. Legacy records

    Publication type · Language · Original ID

  2. Preparation and mapping

    Tags and images · Field mapping · Preview run

  3. WordPress import

    Create or update · Selected fields · Action log

Publication types, languages, tags and images are mapped before records are created or updated.

  • 01Custom import plugin
  • 02Selective updates
  • 03Legacy links
03

Incident handling

Cleaning legacy content and defending the new site.

Before migrating the archive, we examined a copy of the old database and found signs of infection in publication content, including injected scripts and embedded frames. We shared the findings with the newsroom and CERT-UA specialists, and cleaned the inherited content during migration. From launch, our team took an active part in defending the new site: analysing requests, applying blocks and improving its protection. Responding to attacks became part of our ongoing technical support.

IMI article reporting the attack on Novosti Donbasu, with the publication date and author.

IMI reporting on the attack, 18 March 2026. Article by Yuliia Harkusha.

  • 01Database analysis
  • 02Content cleanup
  • 03Attack defence
04

Beyond release

Supporting the platform after launch.

After launch, we fixed database errors and improved resource loading, background tasks and caching. We set up separate production and test environments on the server, each with its own database and file storage. We also developed backup tools for database dumps and file archives, checksum verification, remote transfer and a restore procedure. Application configuration, media and backup storage are managed separately.

Production architecture · September 2026

  1. Cloudflare → Tunnel

    The public domain routes to the origin

  2. Caddy

    Static files and media · Requests to PHP-FPM

  3. WordPress / PHP-FPM

    Publishing application · Scheduled WordPress tasks

  4. MySQL + Redis

    Publication data + object cache

Production and test run on the same VPS, with separate databases and file storage. Redis provides object caching.

  • 01Production and test
  • 02Backup tools
  • 03Ongoing support

The result

A new website and tools built for the newsroom.

Novosti Donbasu gained a multilingual WordPress platform with adapted publishing workflows and custom editorial components. Our migration tools accounted for the structure of its existing archive, including publication types, languages and legacy identifiers.

Ongoing work

Launch was the start of the next stage.

After the new site went live, we continued improving editorial tools, supporting the infrastructure and helping defend the platform against attacks. Development and technical support remained part of the same project.