A live, in-production business website I designed and engineered end to end: an 8-page responsive site with an interactive request-builder tool, a serverless backend, and a real deployment I troubleshot down to the DNS layer.
Shaking Up Events is an event staffing, design, and planning business. I built its entire web presence: a multi-page marketing site plus a functional intake system that turns a visitor's selections directly into a lead in the business owner's inbox and spreadsheet, no manual data entry involved.
The centerpiece is a client-facing "build a request" tool: users check off services across multiple categories, quantities update live via dependent dropdowns, and the page conditionally reveals or hides entire form sections based on earlier answers (built with vanilla JS state management, no framework). The final selection, plus contact details and optional photo uploads, submits without a page reload.
Rather than standing up a traditional server, I built the backend on Google Apps Script: a single endpoint that routes submissions by type (client requests, vendor sign-ups, designer applications) into their own Google Sheet tabs, auto-creating headers on first use. Uploaded images are base64-encoded client-side, decoded server-side, and saved into organized Google Drive folders with shareable links written back into the spreadsheet row and the notification email.
The site is deployed on Cloudflare Workers with a custom domain. I worked through real production issues, resolving a conflicting Workers Route that only matched the bare root path, replacing a broken A-record setup with a proper CNAME configuration, and diagnosing a 522 timeout down to a missing static asset in the deployment bundle, using Cloudflare's DNS records, Workers routing, and network inspector tools directly.
The front end runs on a self-contained CSS design system: consistent spacing and color tokens, a fully responsive layout down to mobile, and a hamburger navigation menu built with zero JavaScript, using the checkbox-hack pattern with the modern :has() CSS selector.