// PROJECT 001 · CLIENT.ZERO

We built this site
in 14 days.

Most agencies pitch with decks. We pitch with shipped products, starting with our own. This is the full, transparent build log for 0880.digital: every decision, every day, every metric. If we can't ship our own site fast and well, why would anyone trust us with theirs?

14 / 14
Days Shipped
100%
Progress
8 tools
Tech Stack
Private
Public Repo
// 01 / THE.CONCEPT

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.

// 02 / STACK.DECISIONS

What we built it with.

Next.js 16
App Router, SSG, edge rendering
React 19
Component model, server components
TypeScript 5
Type safety across the stack
Tailwind CSS 4
Utility-first styling
next/font
Self-hosted fonts, zero CLS
PostHog
Product analytics + session replay
Vercel
Hosting, edge network, preview deploys
GitHub Actions
CI: typecheck + build on every push
// 03 / THE.BUILD.LOG

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.

[Day 01 · Foundation]Shipped

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
13,361
Artifacts Removed
17
Commits Cleaned
< 1 day
Time to Deploy
[Day 02 · Foundation]Shipped

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
[Day 03 · Pages]Shipped

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
[Day 04 · Pages]Shipped

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
[Day 05 · Pages]Shipped

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
[Day 06 · Hardening]Shipped

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)
[Day 07 · Hardening]Shipped

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
7
Security Headers
5/hr
Rate Limit
[Day 08 · Hardening]Shipped

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
[Day 09 · Hardening]Shipped

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
[Day 10 · SEO]Shipped

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
[Day 11 · SEO]Shipped

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
[Day 12 · Launch]Shipped

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
[Day 13 · Launch]Shipped

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)
3
Domains Live
< 100ms
Redirect Latency
[Day 14 · Launch]Shipped

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
14 / 14
Days Shipped
3
Domains Live
20+
Routes Live
// 04 / BEYOND.THE.PLAN

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.

// WANT.THIS.FOR.YOUR.PRODUCT?

We'll do this for you
in 30 days or less.

Same process, same transparency, same hard deadline. The only difference is you get the shipped product.

Start Your Sprint →