<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: David Lopes</title>
    <description>The latest articles on Forem by David Lopes (@underknow).</description>
    <link>https://forem.com/underknow</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3601534%2Fd1859274-f8da-492c-952b-366cca579839.jpeg</url>
      <title>Forem: David Lopes</title>
      <link>https://forem.com/underknow</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/underknow"/>
    <language>en</language>
    <item>
      <title>How I Built a 95+ PageSpeed Website in &lt;24h (Without Being a Developer)</title>
      <dc:creator>David Lopes</dc:creator>
      <pubDate>Fri, 07 Nov 2025 15:54:16 +0000</pubDate>
      <link>https://forem.com/underknow/how-i-built-a-95-pagespeed-website-in-24h-without-being-a-developer-51n6</link>
      <guid>https://forem.com/underknow/how-i-built-a-95-pagespeed-website-in-24h-without-being-a-developer-51n6</guid>
      <description>&lt;h3&gt;
  
  
  TL;DR
&lt;/h3&gt;

&lt;p&gt;I’m a marketer, not a developer.&lt;br&gt;&lt;br&gt;
Still, I built a modern, SEO-ready, ultra-fast website with a PageSpeed score of 95+ — in less than 24 hours — using &lt;strong&gt;Claude Code&lt;/strong&gt; as my only technical assistant.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.david-lopes.com/" rel="noopener noreferrer"&gt;David Lopes&lt;/a&gt; — live, minimal, performant.&lt;/p&gt;

&lt;p&gt;No WordPress. No Framer. No Webflow. No bloated themes. Just a clear spec and Claude as my pair programmer.&lt;/p&gt;

&lt;p&gt;Here’s how I went from zero to production in one day — and what I learned along the way.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: From Side Projects to Nowhere
&lt;/h2&gt;

&lt;p&gt;I’ve started dozens of side projects. Most never saw the light of day.&lt;br&gt;&lt;br&gt;
Not because of lack of ideas — but because of execution paralysis.&lt;/p&gt;

&lt;p&gt;I don’t code. And as a marketer, my go-to tools were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WordPress (slow, plugin hell)&lt;/li&gt;
&lt;li&gt;Webflow (limited flexibility)&lt;/li&gt;
&lt;li&gt;Framer (pretty, but bad SEO &amp;amp; performance)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each tool came with tradeoffs.&lt;br&gt;&lt;br&gt;
Every time I wanted to go beyond the default, I hit a wall.&lt;/p&gt;

&lt;p&gt;So I gave myself a new challenge:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;What if I could build a fast, production-ready, custom site in &amp;lt;24 hours… without writing code myself?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Enter Claude Code: My AI Pair Programmer
&lt;/h2&gt;

&lt;p&gt;I didn’t pick a stack. I started with a spec.&lt;/p&gt;

&lt;p&gt;Here’s what I told Claude:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I want to build a responsive, SEO-ready site with 3 static pages, a blog, markdown content, good performance on mobile, hosted on a CDN, and zero CMS.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Within seconds, Claude replied with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vite + React + Tailwind CSS&lt;/li&gt;
&lt;li&gt;Express backend&lt;/li&gt;
&lt;li&gt;PostgreSQL with Drizzle ORM&lt;/li&gt;
&lt;li&gt;MDX for content&lt;/li&gt;
&lt;li&gt;Hosting on Railway + Cloudflare&lt;/li&gt;
&lt;li&gt;Umami for analytics (no cookies, no GDPR banners)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not only did it suggest the stack — it scaffolded the full project:&lt;br&gt;&lt;br&gt;
files, folders, components, scripts, deploy setup. Everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Stack Worked (Even If I Didn’t Choose It)
&lt;/h2&gt;

&lt;p&gt;I didn’t arrive with strong technical opinions. I had &lt;strong&gt;functional constraints&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Claude mapped those into a lightweight, modern stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React 18 + Vite (fast builds, tiny bundles)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling&lt;/strong&gt;: Tailwind CSS (purged to 8KB)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routing&lt;/strong&gt;: Wouter (1.6KB vs 9KB for React Router)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content&lt;/strong&gt;: MDX files (easy to edit, flexible)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Express.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: PostgreSQL via Railway&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ORM&lt;/strong&gt;: Drizzle (minimal, type-safe)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics&lt;/strong&gt;: Umami (privacy-focused, 2KB script)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting&lt;/strong&gt;: Railway + Cloudflare CDN&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No CMS, no plugin bloat, no black-box framework.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Claude Actually Did For Me
&lt;/h2&gt;

&lt;p&gt;Claude helped me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🏗 Scaffold the full project (frontend + backend)&lt;/li&gt;
&lt;li&gt;🎨 Build 40+ UI components (buttons, cards, forms) with accessibility&lt;/li&gt;
&lt;li&gt;🔍 Set up meta tags, Open Graph, JSON-LD structured data&lt;/li&gt;
&lt;li&gt;🖼 Optimize Core Web Vitals: hero image preload, font loading strategy&lt;/li&gt;
&lt;li&gt;📦 Reduce JS bundle from 450KB to 85KB via lazy loading&lt;/li&gt;
&lt;li&gt;🧪 Debug layout shifts, memory leaks, unused dependencies&lt;/li&gt;
&lt;li&gt;🛠 Create database schema, migrations, and CRUD routes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I was running &lt;strong&gt;3 Claude sessions in parallel&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One for frontend (components + layout)&lt;/li&gt;
&lt;li&gt;One for backend/API&lt;/li&gt;
&lt;li&gt;One for SEO and performance optimization&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Results (Metrics After 23h Build Time)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;PageSpeed Insights&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Mobile&lt;/th&gt;
&lt;th&gt;Desktop&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;95&lt;/td&gt;
&lt;td&gt;98&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LCP&lt;/td&gt;
&lt;td&gt;1.1s&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;INP&lt;/td&gt;
&lt;td&gt;45ms&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLS&lt;/td&gt;
&lt;td&gt;0.02&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FCP&lt;/td&gt;
&lt;td&gt;0.8s&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TTFB&lt;/td&gt;
&lt;td&gt;180ms&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Bundle &amp;amp; Build&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initial JS: 85KB (gzipped)
&lt;/li&gt;
&lt;li&gt;Tailwind CSS: 8KB (purged)
&lt;/li&gt;
&lt;li&gt;Build time: 12s (Vite magic ✨)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hosting&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Railway: Git-based deploy, PostgreSQL native, $5/mo
&lt;/li&gt;
&lt;li&gt;Cloudflare: Free CDN, cache rules, Brotli compression
&lt;/li&gt;
&lt;li&gt;Domain: ~€10/year
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total cost:&lt;/strong&gt; ~€10/month&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Loved Most
&lt;/h2&gt;

&lt;p&gt;🔓 &lt;strong&gt;Freedom&lt;/strong&gt; – Full control, no CMS lock-in.&lt;br&gt;&lt;br&gt;
🧠 &lt;strong&gt;Learning&lt;/strong&gt; – Understood the stack thanks to Claude.&lt;br&gt;&lt;br&gt;
🚀 &lt;strong&gt;Velocity&lt;/strong&gt; – From idea to live in a day.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I’d Improve Next Time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Credits&lt;/strong&gt; – The free tier rate limits hit fast. I used the API (cheap and faster).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Precision&lt;/strong&gt; – The better your prompt, the better Claude’s output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Terminal Setup&lt;/strong&gt; – Requires some juggling, but makes you feel like you have a dev team.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You don’t need to be a developer to ship like one.&lt;/li&gt;
&lt;li&gt;Start with a clear spec, not a framework.&lt;/li&gt;
&lt;li&gt;Claude is a force multiplier — not a replacement, but a productivity rocket.&lt;/li&gt;
&lt;li&gt;Vite + React + Tailwind + Railway + Cloudflare is a killer stack for solo builders.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Add i18n (multilingual support)
&lt;/li&gt;
&lt;li&gt;Make it a PWA (offline-ready)
&lt;/li&gt;
&lt;li&gt;Automate content via AI/Markdown pipelines
&lt;/li&gt;
&lt;li&gt;Reuse the stack for landing pages, SEO projects, SaaS MVPs
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I’ve never shipped this fast, this cleanly, with this much control.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You don’t need to code to build fast.&lt;br&gt;&lt;br&gt;
You just need the right assistant, and the right mindset.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🖥 &lt;a href="https://www.david-lopes.com/" rel="noopener noreferrer"&gt;david-lopes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— David Lopes&lt;/p&gt;

</description>
      <category>website</category>
      <category>frontend</category>
      <category>railway</category>
      <category>claude</category>
    </item>
  </channel>
</rss>
