Accounting & financial advisory · 2026
Dynasty Advisory
A WordPress marketing site rebuilt as an application, with the client portal already designed into it.
An accounting firm's site was a WordPress install doing a brochure's job slowly. The rebuild kept the brand exactly — colours and type lifted from the live stylesheet rather than reinterpreted — and made the next two phases, client login and document exchange, an extension rather than a second rewrite.
- Engagement
- Phased — marketing site live first
- Phase 1
- Full rebuild on the real domain
- Phases 2–3
- Client auth, then document storage
- Lighthouse on mobile, all four categories
- ≥ 95Lighthouse on mobile, all four categories
- validated identically on client and server
- 9 fieldsvalidated identically on client and server
- URLs lost — every old path redirected
- 0URLs lost — every old path redirected
A faithful rebuild, not a redesign
The firm liked its brand. So the palette, the type scale and the spacing came off the live site's computed styles before a single component was written — not approximated from a screenshot. The rebuild is meant to be indistinguishable to a returning client except that it loads immediately.
Copy lives in typed content modules, never inline in components. That is the one decision that makes moving to a CMS later a swap of one module instead of a rewrite of every page — and in the meantime it means the firm can correct a service description without anyone reading JSX.
The form is the one public write path
Everything else on the site is read-only, so the contact form gets the attention: a shared schema validating on both sides, a spam check, and delivery to the firm with the sender set as reply-to, so hitting Reply reaches the lead rather than the website.
When sending fails it surfaces the phone number and the email address instead of a false success state. A lead who thinks they've been in touch and hasn't is worse than one who is told to call.
Building phase one so phase two isn't a rewrite
The portal — client login, document exchange — isn't built yet. But every phase-one decision was checked against it: the hosting, the database that will exist, the auth library that will slot in, the file storage. Phase one persists nothing and needs no database, and that's a choice, not an omission. What matters is that adding one later doesn't disturb anything already shipped.
Launch had a checklist with hard gates: keyboard-navigable and axe-clean, per-page metadata, structured data, sitemap, and a crawl of the old site so every URL already in the world lands somewhere.