Corporate Interactive's multi-tenant visual CMS and website builder, combining structured page composition, content and asset management, publishing, forms, commerce and public rendering.
Visit the product websiteA visual CMS has to give editors freedom without allowing the saved page to become inconsistent or unsafe. Responsive layout, reusable content, custom HTML, assets, navigation, publishing, SEO and public performance all meet in the same system, often across many customer sites and years of stored content.
Within the Corporate Interactive team, I have helped modernise the established WebDirector platform while continuing to ship editor improvements. My Principal Engineer role spans the responsive layout model, editor state and interaction, content and file tooling, caching, security and the Next.js/tRPC/Drizzle architecture that connects authenticated editing to public delivery.
Visual Editor is the editing experience within Corporate Interactive's WebDirector platform: a multi-tenant content management system and website builder for businesses that need more than a collection of static pages. Editors compose pages visually from structured rows, columns and content blocks, manage shared content and files, preview responsive layouts and publish into the same system that serves the public site. The wider product includes navigation, blogs, calendars, forms and data capture, ecommerce, SEO controls and reusable modules.
The platform has evolved over many years and currently combines a modern Next.js and React application with typed APIs, a Drizzle/MySQL data layer, AWS-backed assets and a large set of project-specific modules. That history is valuable—real sites and workflows already exist—but it also makes compatibility, performance and clear boundaries essential.
I work on Visual Editor as part of the Corporate Interactive engineering team. Multiple engineers contribute to the editor and the surrounding CMS, so significant changes need a shared model and migration path rather than assumptions held by one person. We collaborate through reviews and integration work, and we use feedback from live customer sites to distinguish a local interaction problem from a deeper issue in layout, persistence or public rendering.
As Principal Engineer, I help connect those layers. I have been responsible for architectural direction and difficult cross-cutting work, but also for making that direction usable by the rest of the team: documenting constraints, extracting reusable behaviour, reviewing implementation choices and improving the system in increments that existing sites can absorb.
My editor work includes responsive preview and breakpoint behaviour, row sizing and full-width layouts, contextual controls, drag-and-drop state, rich-text tooling and reusable widgets. Around the editor, I have worked on file-management performance and image compression, public-shell caching, authentication and two-factor flows, route and content caching, and safer sandboxing for customer-supplied HTML.
I have also contributed to the platform's modern application structure using Next.js, tRPC, Drizzle and shared TypeScript contracts. The goal has not been a cosmetic rewrite; it has been to make authenticated editing, persistence and public rendering easier to reason about while continuing to serve the capabilities already used across customer projects.
Visual Editor taught me to see a page builder as a constraint and serialisation system. The visible canvas is only one projection of a structured model, and responsive preview, persistence and public output must all interpret that model consistently. It also reinforced that extensibility needs boundaries: custom content and project modules are valuable, but they need security isolation, predictable APIs and performance budgets. Most importantly, I learned that modernising a mature platform is a team discipline—progress comes from creating reliable seams where old and new code can coexist, then moving those seams deliberately.
Against the busiest platform on record (882 sessions)
Hours are wall clock with an agent in the loop — specifying, reviewing and correcting, not just generating.