Skip to content
Let's Talk
Projects
Travel & Booking Platform

BookNordics — Nordic Travel Platform

Full codebase rescue, modernisation, and performance overhaul of a multi-vendor Nordic travel booking platform — taking it from an undocumented legacy environment to a stable, high-performance system with zero unplanned downtime.

Visit site
CLIENT
BookNordics
Norway
ROLE
Senior Full Stack Developer
DURATION
6 months
TEAM
Solo
  • 66%

    Load time reduction — 12 sec → 4 sec

  • 10k+

    Products synced per cycle with zero manual intervention

  • 0

    Minutes of unplanned downtime during migration

Tech Stack

  • Laravel
  • Laravel Statamic CMS
  • Vue.js
  • PostgreSQL
  • REST API
  • Laravel Queues / Horizon
  • DigitalOcean
  • Google Analytics
  • Figma
  • Zend Grid
  • HubSpot
  • Ahrefs

Delivery

  1. PHASE 01

    Codebase Rescue & Environment Stabilisation

    Mapped the undocumented architecture from production code, provisioned a parallel server, initialised Git for the first time, and resolved every inherited critical bug — all without a minute of unplanned downtime.

  2. PHASE 02

    Modernisation

    Upgraded Laravel and Statamic CMS to their latest stable releases, refreshed every Composer and NPM dependency, and brought the server environment in line with current PHP requirements. Zero data loss, minimal downtime.

  3. PHASE 03

    Performance Overhaul

    Cut page load from 12 seconds to 4 seconds — 66% faster — through N+1 elimination, Laravel route/response caching, REST API tuning, and Vue.js lazy loading on high-traffic routes.

  4. PHASE 04

    Scalable Product Sync Pipeline

    Re-architected 18 concurrent Horizon queues to process 10,000+ products with image optimisation at ingest, AWS S3 storage, and a Statamic-backed manual sync trigger for editorial control.

  5. PHASE 05

    Integrations & Business Tooling

    Wired Google Analytics, Zend Grid, HubSpot, and Ahrefs into the booking and editorial flows to deliver a complete operational platform with end-to-end traffic, CRM, and SEO instrumentation.

Outcomes

  • Page load time reduced by 66% — from 12 seconds to 4 seconds.
  • 10,000+ products reliably synchronised per cycle with zero manual intervention required.
  • All inherited bugs and critical issues resolved at takeover.
  • Codebase placed under version control for the first time in the platform's history.
  • Full dependency stack modernised with zero data loss and minimal downtime.
  • Media pipeline migrated to AWS S3, eliminating server storage constraints.
  • Stakeholder confidence restored following a high-risk vendor transition.

Challenges & Learnings

  • No documentation. No handover. No downtime allowed.

    When I started there was no documentation, no local development environment, no Git history, and no colleague to ask. The only reference material was the production codebase itself. The challenge was to achieve full understanding of the system without making any change that could destabilise production. The approach was methodical — read the codebase entirely before touching anything, map the architecture on paper, then provision a completely separate server and deploy a verified copy before any modification was made to the original environment. Git was introduced on the parallel environment first, and only once the client was informed and the new environment was verified stable did the migration proceed — without a single minute of unplanned downtime.

  • 18 queues. 10,000+ products. 100 HD images each. Some in 4K.

    The product sync ran 18 concurrent queues, with each of the 10,000+ products carrying an average of 100 media assets — and some supplier feeds delivering raw 4K source files. At peak, a single sync cycle attempted to store hundreds of gigabytes of unoptimised image data, causing storage exhaustion, API timeouts, and queue failures. The solution was a custom image processing layer inserted into the sync pipeline: every incoming image is intercepted before storage, resized and compressed into web-optimised variants at defined breakpoints, then written to AWS S3 rather than local disk. A manual sync trigger was also added to the Statamic CMS so editors could refresh any single product on demand — collapsing what was previously an engineering ticket into a single click.