I just finished a one-person sprint: build, deploy, and market a real web agency business end-to-end in a week. Live at zamhwa-studio.netlify.app.
No framework. No CMS. No backend. Just HTML, Netlify, and aggressive programmatic SEO.
Here's the code.
The architecture
/
├── index.html # Single-file landing (~1100 lines)
├── netlify.toml
├── robots.txt
├── sitemap.xml
├── _redirects
├── thumbs/*.jpg # Real screenshots of portfolio sites
├── guide/
│ ├── cost-2026/index.html
│ ├── domain/index.html
│ └── seo-checklist/index.html
├── industries/
│ ├── cafe/index.html
│ ├── clinic/index.html
│ ├── shop/index.html
│ └── startup/index.html
└── vs/
└── imweb/index.html
That's it. No React, no Vite, no build step. It's 2026 and for a landing page that needs to rank, plain HTML beats everything.
Why no framework?
Three reasons.
First, Time-to-First-Byte. Netlify serves static HTML from edge in ~30ms. A Next.js app on Vercel with SSR on the same page was 180ms. For a Korean audience on 4G mobile, that's the difference between a 70 LCP and a 95.
Second, Google understands it instantly. No hydration mismatch, no JS-rendered content to wait on, no framework-specific canonicalization bugs.
Third, I can iterate at the speed of thought. Edit a line, git push, live in 30 seconds. I shipped 23 deploys in 7 days.
The SEO generator (Python)
HEAD_TMPL = """<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<title>{title}</title>
<link rel="canonical" href="https://zamhwa-studio.netlify.app/{slug}" />
<script type="application/ld+json">
{{
"@context": "https://schema.org",
"@type": "Article",
"headline": "{title}",
"author": {{ "@type": "Organization", "name": "the vibe company" }}
}}
</script>
..."""
for slug, meta in pages.items():
html = HEAD_TMPL.format(**meta, slug=slug) + BODIES[slug] + FOOTER_TMPL
write(f"{slug}/index.html", html)
Eight pages, 2000+ words each, full structured data, rendered in 90 seconds. Every page gets BreadcrumbList + Article JSON-LD, canonical, OG, and inline CTAs.
Netlify Forms — the simplest order intake possible
<form name="contact" method="POST" data-netlify="true" netlify-honeypot="bot-field">
<input type="hidden" name="form-name" value="contact" />
<input name="name" required />
<input name="contact" required placeholder="email or phone" />
<select name="package">
<option>Starter</option><option>Business</option><option>Premium</option>
</select>
<textarea name="message"></textarea>
<button type="submit">Send</button>
</form>
Netlify detects data-netlify="true" at build time, routes submissions to its form service, and emails me on every submission. Zero backend code. Honeypot blocks 99% of spam.
Screenshots with Playwright (not thum.io)
Third-party screenshot services fail a lot. CORS, rate limits, stale images. For production, just capture them yourself:
import { chromium } from 'playwright-core';
const browser = await chromium.launch({ args: ['--no-sandbox'] });
const ctx = await browser.newContext({ viewport: { width: 1400, height: 900 } });
const page = await ctx.newPage();
for (const site of SITES) {
await page.goto(site.url, { waitUntil: 'networkidle', timeout: 30000 });
await page.waitForTimeout(2000);
await page.screenshot({ path: `thumbs/${site.slug}.jpg`, type: 'jpeg', quality: 85 });
}
await browser.close();
I serve these from the same domain, so no CORS, no hotlink block, no weird CDN costs.
robots.txt — block what doesn't help you
User-agent: *
Allow: /
User-agent: Googlebot
Allow: /
User-agent: Yeti
Allow: /
User-agent: Bingbot
Allow: /
User-agent: SemrushBot
Disallow: /
User-agent: AhrefsBot
Disallow: /
User-agent: MJ12bot
Disallow: /
Sitemap: https://zamhwa-studio.netlify.app/sitemap.xml
Semrush/Ahrefs bots hit your site 50–200 times a day. They give you zero traffic. Block them. Your Googlebot crawl budget goes up.
Results (Day 7)
- 9 URLs indexed in Google Search Console
- Lighthouse Performance: 98 / Accessibility: 100 / SEO: 100
- First order inquiry: 3 leads in the first 48 hours from cold traffic
- Total infra cost: $0 (Netlify free tier) + $22 for the
.krdomain
The full code
All of it is public and you can read it by viewing source on any page at zamhwa-studio.netlify.app. The SEO checklist guide walks through every tactic I used.
If you're building something similar and want to compare notes, my inbox is open.
Top comments (0)