Digital Marketing Agency Website
A 50+ page marketing website with an integrated blog, a careers module and server-side application handling.
- Frontend Engineer
- React · TailwindCSS · GSAP · Framer Motion

Overview
A 50+ page marketing website for a digital agency, with an integrated blog, a careers module and Nodemailer-based application handling on an Express backend.
Problem
A large content surface — 50+ pages, a blog, a careers section — still had to feel fast and considered, with reliable handling of inbound applications and enquiries.
My Role
- Engineered the 50+ page site end to end.
- Built the integrated blog and the careers module.
- Implemented Nodemailer-based application and enquiry handling on Node.js + Express.
- Owned motion and interaction with GSAP and Framer Motion.
Architecture
React + TailwindCSS, with motion via GSAP and Framer Motion.
Node.js + Express.
Nodemailer pipeline for application and enquiry submissions.
Integrated blog and careers module.
Technology
- React
- TailwindCSS
- GSAP
- Framer Motion
- Node.js
- Express
- Nodemailer
Engineering Challenges
50+ pages without a performance cliff
Content surfaces this large tend to accumulate weight page by page until the whole site feels slow.
Reliable inbound handling
Job applications and enquiries had to arrive intact, every time.
Motion that doesn't cost interactivity
Agency sites lean on motion, which easily turns into jank and input lag.
Solution
50+ pages without a performance cliff
A shared layout and component system, asset discipline, lazy loading and image optimisation applied across the page set.
Reliable inbound handling
A Nodemailer pipeline on Express with validation on the server before anything is sent.
Motion that doesn't cost interactivity
Used GSAP and Framer Motion deliberately — on the moments that carry meaning, not on everything.
Performance
- Performance and interaction were improved throughout the build — asset discipline, lazy loading and image optimisation across the full page set.
Product Experience
