A portfolio, not a highlight reel.
Twenty-five of the projects that shaped this decade — WordPress and plugin builds first, then the branding, marketing and photography that came with them. Every project links to the real, live site.
25 projects shown
All projects

Pedagogy Club
Custom WordPress theme and a purpose-built enrolments plugin, so bookings run on logic made for this business.
Visit site ↗
Bettafi
Marketing site for an AI personal finance app, built for speed and clarity around a genuinely technical product.
Visit site ↗
MHV Clinic
Osteopathic clinic site built to turn visitors into booked appointments, not just look clinical.
Visit site ↗
Chear Beauty
A product-led website built around a real catalogue, with photography to match.
Visit site ↗
High Five Family Fitness
Local gym site built to get memberships booked, not just browsed.
Visit site ↗
HD Security Systems
A security installer's site engineered to convert enquiries into surveys booked.
Visit site ↗
Ecoboxes
Brand identity and website for a sustainable packaging business.
Visit site ↗
Al Jannah Villa Marrakech
Art direction, brand strategy and website design for a luxury villa rental.
Visit site ↗
Kemp Services
Website design built around the photos, copy and keywords the business actually needed.
Visit site ↗
DCD Connect
Event photography, content and web development for a data centre industry conference.
Visit site ↗
TEDx University of Salford
Full brand identity for a TEDx event, stage design through to stationery.
Visit site ↗
DDG Windows
Rebrand and identity for a windows and glazing installer.
Visit site ↗
KBMD Chartered Certified Accountants
Identity work for a chartered accountancy practice.
Visit site ↗
Taur Security
Brand identity and print collateral for a security services firm.
Visit site ↗
Vijay's Virasat
Full brand identity and photography for a restaurant, from logo to menu design.
Visit site ↗
Tulsi Vagjiani
Branding, photography and social content built around a personal brand.
Visit site ↗
Protech Autocentres
Logo and brand identity for a vehicle service centre.
Visit site ↗
Metro Laundrette & Dry Cleaners
Rebrand for a laundrette and dry cleaner, refreshed for a new generation of customers.
Visit site ↗
London Kings Clothing
Branding, photography and social content for a clothing retailer.
Visit site ↗
Sefia London
Brand identity for a fashion label.
Visit site ↗
Fireaway Pizza
Local marketing and branding support for a Fireaway franchise location.
Visit site ↗
News UK
Brought in to help reset cyber messaging and awareness for the UK's largest news media group.
Visit site ↗
Japex Automotive
Google Ads and social media management to keep enquiries flowing for a car dealership.
Visit site ↗
The Hollybush Bar & Restaurant
Brand photography and identity for a bar and restaurant.
Visit site ↗
Triage Vets
Full rebrand and photography for a veterinary practice.
Visit site ↗A few of the harder problems
Where the client's identity stays out of it by agreement, but the technical substance doesn't.
Real-time occupancy engine
The problemA self-storage operator's booking data lived entirely inside a third-party platform. Their WordPress site showed unit availability that was hours — sometimes days — out of date, costing them bookings on units that had already sold.
What I builtA custom plugin that syncs live occupancy and pricing from the external platform's API directly into WordPress, handling pagination and webhook updates so the site reflects real availability within minutes, not a manual export.
The resultTheir team stopped manually updating listings. The site stopped quoting availability that no longer existed.
Storefront + CRM pipeline
The problemA booking platform needed its public storefront, its checkout, and its internal sales pipeline to share one source of truth — instead of leads falling through the gap between the website and the CRM.
What I builtA plugin layer connecting the storefront and booking flow directly to the CRM's deal and task objects, so a form submission becomes a tracked deal automatically, with the right stage, owner, and follow-up task.
The resultNo lead touches a spreadsheet. Every enquiry has an owner within seconds of landing.
Inventory-led rebuild
The problemAn ageing site built on a page builder couldn't handle the client's growing product catalogue without slowing to a crawl.
What I builtA fully custom PHP theme built around their inventory data model from the ground up, rather than bending a generic template to fit it.
The resultThe catalogue can grow without the front end degrading, because it was built for that from day one.
A booking engine that quotes accurately
The problemBookings came through a generic form that couldn't show real availability or price a job properly, so quotes went out wrong and slots got double-sold.
What I builtA multi-step booking engine that reads live availability and applies the business's own pricing and capacity rules in real time, so the customer sees an accurate price and a genuinely open slot before they commit.
The resultBooking became self-serve and accurate. The team stopped un-picking double-bookings and re-quoting by hand.
A customer portal that took admin off the inbox
The problemCustomers had no way to manage their account, bookings or documents without emailing the office, so routine admin swallowed the team's day.
What I builtA secure customer portal built into the site — accounts, self-service booking changes, document access — connected to the systems the business already ran on.
The resultRoutine requests moved from the inbox to self-service, and the team's time went back to the work only they could do.
If your problem looks like one of these — or nothing like them
That's usually the interesting part. Tell me what you're starting, or what's broken.