All work

Website · Accounting and tax

Headless rebuild for accounting and tax services

A WordPress website was rebuilt as a headless platform with Nuxt and a decoupled CMS. The migration covered pages, articles, images, documents, videos, and the main lead-generation flows from the previous site.

Preview: Headless rebuild for accounting and tax services

Challenge

An accounting and tax services firm had a WordPress website that had accumulated service pages, articles, downloadable documents, videos, forms, and several lead-generation journeys.

The project required a rebuild on a headless architecture, not a visual copy of the prior site. Content had to be separated from the frontend, while the resources that remained valuable had to move to a new technical foundation.

The migration included an existing editorial library. Articles from WordPress contained CMS-generated HTML and, in some cases, legacy Elementor structures that could not be transferred directly to the new frontend.

Documents and media were linked from multiple pages. Keeping the prior WordPress installation only to serve those files would have preserved a dependency on the infrastructure being replaced.

Forms were another critical requirement. The new frontend would no longer have WordPress plugins available, so enquiry processing, email notifications, and selected marketing flows had to be rebuilt with custom logic.

The visual redesign and design system were created by a designer in Figma. My responsibility was to translate that system into the new frontend and build the complete technical architecture and implementation.

Solution

My contribution covered the technical architecture, complete frontend development, headless CMS integration, and migration of the existing content.

The new site was developed with Nuxt 3, Vue 3, TypeScript, and Tailwind CSS. I implemented the Figma designs in code and built a reusable component library for pages and sections.

Rather than using WordPress as both frontend and CMS, content was moved to Orbitype in a decoupled architecture backed by PostgreSQL.

Pages are assembled from reusable Vue components. The CMS stores each page structure as a collection of sections, and the frontend interprets that data to select and render the appropriate component.

This model supports service pages, company information, resources, contact, frequently asked questions, and editorial content through a shared component library rather than separate layouts inside a page builder.

For the editorial archive, I developed a dedicated migration process from WordPress. It imports published articles, downloads their featured images, adapts links between posts, and transforms the content before storing it in the new CMS.

Twenty-two articles were migrated from the previous installation. During the process, empty elements and unnecessary markup from WordPress and Elementor were removed so visual debt would not be carried into the new system.

The resource library was migrated too. Thirteen downloadable documents were transferred to the new project and their links were updated so the application serves them directly.

Legacy video assets required a separate workflow. Four files from WordPress were processed for web delivery, reducing their combined size from approximately 402 MB to 55 MB before they were included in the frontend.

I also rebuilt the forms as native frontend components. Requests are processed through server-side endpoints and connected to SendGrid for delivery of the relevant notifications.

One lead-capture form is also connected to MailerLite. Its integration runs independently after SendGrid’s main processing, so a marketing-platform failure does not interrupt form delivery. Calls to action for consultation booking connect to Calendly using the relevant links for each page.

The project is deployed on Vercel and validated with TypeScript, ESLint, and Playwright interface tests.

My role covers architecture, development, migration, and technical integrations. The visual design was created by the project’s designer, while specialist accounting and tax content was supplied or validated by the responsible company team.

Outcome

The website was published as a headless application, and WordPress is no longer the layer responsible for presenting pages to visitors.

Corporate content is decoupled from the frontend through Orbitype. Pages and articles can be updated in the CMS while components, responsive behaviour, and integrations remain managed in code.

The existing editorial library was retained in the new architecture: 22 articles and their images were migrated, and inherited HTML was transformed to match the new editorial template.

Downloadable resources and media no longer depend on the old WordPress site. The 13 migrated documents are served by the new project, and the four inherited videos were optimised from approximately 402 MB to 55 MB before publication.

Forms no longer rely on WordPress plugins. The new flow processes submissions server-side and uses SendGrid for notifications, while a targeted MailerLite integration can enrol selected leads in a marketing journey without coupling those functions.

The new architecture creates a reusable base for publishing articles, adding pages, and modifying sections without returning to a page builder.

No verified before-and-after conversion, traffic, or Core Web Vitals measurements are available. The confirmed outcomes are the architecture migration, the transferred content and assets, and the technical capabilities now operating in production.