We're our own first client.
The #1 question any funded startup asks an agency is “show me what you've shipped.” We had an answer problem: we were pre-revenue with zero shipped client projects.
So we flipped the script. We made ourselves the first client. Same 14-day sprint, same methodology, same transparency we offer paying clients, documented publicly as it happens.
If we could ship a production-grade agency site in 14 days, we could prove the launch-date promise without a single client reference. The build process itself becomes the case study.
What we built it with.
Day by day.
No polished after-the-fact narrative. This timeline updates as the sprint runs: shipped days are locked, upcoming days show the plan.
Git Cleanup + Deploy
Untracked 13,361 build artifacts from git history using git-filter-repo, created private GitHub remote, deployed the homepage to Vercel with HTTPS. Zero to live URL in one day.
- .gitignore rewrite
- GitHub private repo
- Vercel production deploy
- public/robots.txt
CI Pipeline + Font Optimization
Added GitHub Actions for type-check + build on every push. Migrated Google Fonts from link tags to next/font/google, eliminating external requests and cumulative layout shift from font swap.
- .github/workflows/ci.yml
- next/font/google (Lexend Deca, JetBrains Mono)
- typecheck script
Contact Page + Form API
Built /contact with a two-column layout: form on the left, Calendly embed slot on the right. Contact form posts to /api/contact with validation (required fields, email format, length caps). Every CTA across the site now routes here.
- /contact page
- /api/contact POST handler
- ContactForm client component
- .env.example
Legal + 404
Shipped Privacy Policy, Terms of Service, and a branded 404 page. Reusable LegalLayout component with custom prose styles. Fixed nav anchor links to work from any page, not just the homepage.
- /privacy
- /terms
- /not-found
- LegalLayout component
- .legal-prose CSS
Client Zero Case Study + Portfolio
Built the data-driven BuildTimeline component and the page you're reading. Then expanded the case studies index with 4 additional portfolio projects (engeniee, automateagent.dev, webstyleguide.dev, desigNerd.dev), pulled from the ops project tracking system.
- /case-study/client-zero
- /case-study (5 projects)
- BuildTimeline component
- Case Studies nav link
PostHog Analytics + Tracking
Wired PostHog for privacy-friendly product analytics with session recordings. Custom event tracking on every CTA (with location + label), form submissions, theme toggle, plus auto-captured pageviews and exceptions. Branded error boundary added for client-side crashes.
- posthog-js
- PostHogProvider
- src/lib/analytics.ts
- /error.tsx boundary
- Events instrumented (Hero, CTA, Pricing, Form, ThemeToggle)
Security Headers + Rate Limiting
Configured Content-Security-Policy whitelisting PostHog and Calendly, HSTS with 2-year preload, X-Frame-Options DENY, Permissions-Policy, and X-Powered-By suppression. Added in-memory IP-based rate limiter to /api/contact (5 per hour).
- next.config.ts headers
- src/lib/rate-limit.ts
- CSP + HSTS + frame-options
- 429 with Retry-After
Mobile Nav + Responsive + A11y
Built a full-screen mobile menu with all 7 services expanded inline. Fixed responsive layouts for Problem (asymmetric grid stacks), Services (bento collapses to full width), and Footer (4-col → 2-col → 1-col). Added skip-to-content link and visible focus rings throughout.
- MobileMenu component
- Hamburger button (44x44)
- Responsive CSS @ 768px + 520px + 480px
- Skip-to-content link
- Focus-visible styles
OG Image + Favicons + Metadata
Generated dynamic Open Graph image (1200x630 brand-aligned card), favicon, and apple-touch-icon using Next.js file-based metadata + edge runtime ImageResponse. Zero binary assets to manage. Added PWA web manifest, metadataBase, title template, Twitter card, and robots directives.
- /opengraph-image (dynamic)
- /icon (dynamic favicon)
- /apple-icon
- site.webmanifest
- metadataBase + title template
- Twitter card meta
Structured Data + Sitemap
JSON-LD with Organization, WebSite, and Service schemas (one per offering). Dynamic sitemap.xml with 14 URLs. Dynamic robots.txt that explicitly welcomes AI engines (we sell GEO: we want to be discovered by ChatGPT, Perplexity, Claude, Gemini).
- src/components/json-ld.tsx
- src/app/sitemap.ts (14 URLs)
- src/app/robots.ts
- Organization + WebSite + 7 Service schemas
FAQ + FAQPage Schema
8-question FAQ section on the homepage with FAQPage schema feeding directly into Google AI Overviews and AI search engines. Each answer reinforces brand positioning so when AI engines summarize us, they parrot our framing.
- src/components/faq.tsx
- src/data/faq.ts
- FAQPage schema added to JSON-LD @graph
- Homepage /#faq section
Full QA Pass + 1 Bug Fix
Code-level audit across 10 categories, live API smoke tests (validation, rate limit, security headers), found and fixed duplicate brand suffix in 7 page titles. All routes return correct status codes, all 6 security headers present, rate limiter blocks 6th submission as designed.
- Placeholder + heading + ARIA + image audits
- API validation tests (200/400/429/405)
- Security header verification
Domain Cutover + Multi-Domain Setup
0880.digital is the primary, with zero88zero.digital and zero88zero.com all redirecting in. SSL/TLS issued and serving on all three. DNS, redirects, sitemap, robots all aligned.
- 3 domains live (with redirects to primary)
- Multi-domain SSL/TLS
- DNS records (A + AAAA + CNAME)
End-to-End Verification + Launch
Full funnel tested live: homepage → service detail → /contact → form submit → confirmation. PostHog session recording verified. Sitemap submitted to GSC. Rate limit live-tested. Marketing site officially live and accepting inquiries.
- 3 domains live (with redirects to primary)
- 7 security headers verified live
- Sitemap.xml + robots.txt serving
- Full funnel end-to-end tested
- 14-day sprint shipped on schedule
Bonus shipped.
Work that landed mid-sprint outside the original 14-day plan. Documented here for transparency: the build is rarely a straight line.
Brand logo system
Integrated 6 brand logos (primary, alt, icon × black/white) with theme-aware switching. Created reusable Logo component.
Portfolio expansion
Expanded /case-study from 1 project to 5, pulled engeniee, automateagent.dev, webstyleguide.dev, desigNerd.dev from ops project tracking.
Traditional 4-column footer
Replaced minimal footer with full multi-column layout (Brand, Services, Company, Resources/Legal). Services column auto-syncs from data file.
7 service detail pages + nav dropdown
Single source of truth in src/data/services.ts powers homepage cards, services index, dropdown, and 7 generated detail pages with deliverables, process timeline, FAQ.
HowItWorks timeline refactor
The "Audit to conversion" section now uses the same vertical timeline visual as the Client Zero build log: design consistency across marketing and case study.