Case Study #1

Role: Co-Founder & Growth / WebOps Lead (Apr 2024 → Jun 2025 rebuild)
CALM Therapy is a private practice that I co-founded. I own everything outside the therapy room (design, code, analytics, and ops).
Timeline & rebuild: I shipped CALM Therapy's first marketing site in June 2024; Lighthouse Performance and SEO were stuck in the low-70s. One year later, from April to June 2025, I led a complete rebuild on the latest Next.js, added structured data, automated image conversion to WebP, and deferred analytics scripts. Mobile Lighthouse now averages 96-99, Accessibility 93, Best Practices 100, SEO 100, with every Core Web Vital solidly in the “Good” band.
Performance & SEO: converted all images to WebP, added build-time compression, and set up a cron-driven service-worker cache for Medium blog content. Mobile Lighthouse now averages 96-99, Accessibility 93, Best Practices 100, SEO 100, and every Core Web Vital is “Good” (previously Performance and SEO were stuck in the mid-60s).
Experimentation: launched a policy-compliant Google Ads pilot to validate paid acquisition; first leads were unqualified, so I'm iterating on keywords and landing-page copy.
Stack: Next.js · AWS Amplify · Google Tag Manager · GA4 · Lighthouse CI · Medium RSS/REST cache script
Case Study #2

Role: Solo Developer & Digital Archivist (Jun → Sep 2023 build; v2 in progress 2025)
AQSWAR is digital archive project for the works of Bahraini journalist Aqeel Swar containing more than 4,000 articles, scripts and photographs from two decades of Bahraini journalism and art. At the outset, every file sat in unstructured S3 folders with inconsistent names and zero metadata.
Initial build (2023): normalised every filename to YYYY-MM-DD-title.ext
, wrote a Node CLI that walks S3, extracts dates and categories and seeds DynamoDB through AWS Amplify's GraphQL API (AppSync). I then built a vanilla React front-end that lets readers filter by year, publisher or medium and renders high-resolution scans on demand.
v2 roadmap (2025): upgrading to a fully searchable text archive: batch-OCR with Google Vision, human QA workflow and an instant-search UI so visitors can find articles by phrase, topic or person. Original images will stay available as reference.
Stack: React · AWS Amplify · AppSync GraphQL · DynamoDB · S3 · Node.js CLI scripts · (planned) Google Vision OCR & full-text search