Private / redacted

Tactical Tech Platform Modernisation

Software engineering and platform modernisation across public-facing products and shared content services, including framework and CMS migrations, performance work, APIs, and editorial workflows.

Role
As Software Engineer / Web Developer, led and contributed to platform modernisation across public-facing products, including architecture decisions, framework and CMS migrations, shared content services, performance work, and close collaboration with research, design and editorial teams.
Result
Migrated three legacy applications while improving initial loads and editorial workflows.
Stack
React · Vue.js · Next.js · Nuxt.js · TypeScript · Decap CMS · REST APIs · WCAG 2.1

System architecture

The building blocks in view

Read the system as text
  1. EditorsEditorial users manage public content.Connects to Decap CMS (manages).
  2. Decap CMSGit-backed editorial interface.Connects to Git-backed content (commits).
  3. Git-backed contentMarkdown and frontmatter form the shared source material.Connects to REST Content API (serves).
  4. REST Content APIProject namespaces expose content and search queries.Connects to Next.js and Nuxt.js sites (content queries), Central search (search queries).
  5. Next.js and Nuxt.js sitesPublic applications consume shared content.Connects to Visitors (public content).
  6. Central searchQueries selected API namespaces.Connects to Visitors (search results).
  7. VisitorsUse public sites and search to reach project content.

Key decisions

What shaped the implementation

Migrate incrementally

Reason
Allowed publishing to continue while legacy applications moved to modern frameworks.
Trade-off
Old and new application structures coexisted during migration.

Refactor the CMS model

Reason
Addressed repeated editorial work at the content boundary instead of only in the frontend.
Trade-off
Required coordinated changes across content and application structures.

Optimise the delivery path

Reason
Applied code splitting and lazy loading where they improved initial loading.
Trade-off
Introduced more intentional loading boundaries.

Outcome

Verified delivery

3

Legacy applications migrated

30%

Faster initial loads

Code splitting, lazy loading, and frontend optimisation.

50%+

Faster editorial workflows

Refactored Decap CMS content architecture.