Case Studies: Daniel Joffe Portfolio
Case Study 1: FightCamp — Performance Optimization
Overview
Company: FightCamp ("Peloton of Boxing")
Role: Full-Stack Engineer
Duration: November 2021 – January 2023
Industry: Connected Fitness / Consumer Tech
The Challenge
FightCamp was experiencing explosive post-pandemic growth, but the web infrastructure couldn't keep up. Mobile users—representing over 70% of traffic—faced unacceptable 10+ second load times. Bounce rates were high, marketing couldn't iterate quickly, and the content team was completely dependent on engineering for page updates.
Key Problems:
- Mobile First Contentful Paint: 8-12 seconds
- Lighthouse scores: 32-43 (failing)
- Mobile bounce rate: 60-75%
- Bundle size: 650-800KB
- Videos downloading 500-800MB on page load
- Content team submitting ~10 engineering requests per week
My Approach
First: Performance Audit
I discovered the performance issues during an R&D Friday and received approval to investigate. Using Lighthouse, Chrome DevTools, and bundle analyzers, I identified the root causes:
- HD images served regardless of viewport size
- Videos auto-downloading on page load (500-800MB each)
- Duplicate libraries in the JavaScript bundle
- No lazy loading implemented
- Missing HTML attributes causing layout shifts
Second: Image Optimization
- Implemented viewport-dependent
srcsetfor responsive images - Built centralized image component with Storyblok + fallback providers
- Added lazy loading with proper dimensions to prevent layout shifts
- Served device-appropriate quality levels
Third: Video Optimization
- Built custom lazy-loading video component using Intersection Observer API
- Prevented auto-play of off-screen videos
- Created multiple AWS S3 versions at different quality levels
- Reduced video payloads from 500-800MB to <300MB (MP4) / <150MB (WebM)
Fourth: Bundle Optimization
- Removed duplicate libraries through bundle analysis
- Implemented webpack tree-shaking and dynamic imports
- Tailored Nuxt.js builds for production
- Streamlined task chaining in build process
Fifth: CMS Migration
- Analyzed 7 marketing pages for common patterns
- Extended UI component library with 10+ CMS-connected components
- Integrated Storyblok CMS with composable component architecture
- Documented everything in Storybook with Jest tests
Sixth: A/B Testing Infrastructure
- Built configurable test components integrated with Google Optimize
- Enabled Marketing to run quarterly tests independently
- Supported copy, video, image, and offer variations
The Results
| Metric | Before | After | Improvement |
|---|---|---|---|
| First Contentful Paint (Mobile) | 8-12s | 1.8-2.5s | ~80% faster |
| Largest Contentful Paint | 15-20s | 5-8s | ~63% faster |
| Total Blocking Time | 3-4s | 0.8-1.3s | ~70% reduction |
| Cumulative Layout Shift | 3-6s | 0.6-1.25s | ~79% reduction |
| Speed Index | 11-14s | 4-6s | ~60% faster |
| Lighthouse Score | 32-43 | ~80 | +40 points |
| Bundle Size | 650-800KB | 250-300KB | ~62% reduction |
| Mobile Bounce Rate | 60-75% | 37-45% | ~39% reduction |
| Engineering Requests | ~10/week | ~2/week | 80% reduction |
Key Takeaways
- Performance is a business metric. The 39% bounce rate reduction directly impacted user acquisition during a critical growth phase.
- Self-initiated improvements matter. This project started as an R&D Friday discovery, not an assigned task.
- Empowering other teams multiplies impact. The CMS migration freed engineering capacity while accelerating marketing velocity.
Technologies Used
Vue.js, Nuxt.js, TypeScript, Webpack, Storybook, Jest, Storyblok CMS, Google Optimize, Google Analytics, AWS S3, Intersection Observer API, Lighthouse, Chrome DevTools