<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>dasdwqdf</title>
    <subtitle>A personal space to write about code, projects and whatever else I feel like.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://dasdwqdf.vhdn.com.br/en/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://dasdwqdf.vhdn.com.br"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-10-02T00:00:00+00:00</updated>
    <id>https://dasdwqdf.vhdn.com.br/en/atom.xml</id>
    <entry xml:lang="en">
        <title>How I made this site</title>
        <published>2026-10-02T00:00:00+00:00</published>
        <updated>2026-10-02T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://dasdwqdf.vhdn.com.br/en/posts/como-foi-criar-este-site/"/>
        <id>https://dasdwqdf.vhdn.com.br/en/posts/como-foi-criar-este-site/</id>
        
        <content type="html" xml:base="https://dasdwqdf.vhdn.com.br/en/posts/como-foi-criar-este-site/">&lt;p&gt;It all started on a Friday afternoon. A few days before, I had stumbled upon &lt;a rel=&quot;external&quot; href=&quot;https://suzuori.straw.page/&quot;&gt;suzuori&#39;s personal page&lt;/a&gt; on Twitter, an osu! player, and it stuck in my head.&lt;/p&gt;
&lt;p&gt;The design caught my attention precisely because it was simple. These days we&#39;re surrounded by AI slop pages, full of cards inside cards, more and more complex and &quot;modern&quot;, and that basic way of making websites kind of faded into oblivion. So, with my friend Maot on call and a freshly paid Claude subscription, we decided to put our friend Claude to work.&lt;/p&gt;
&lt;h2 id=&quot;starting-with-figma&quot;&gt;Starting with Figma&lt;/h2&gt;
&lt;p&gt;We started by installing the Figma plugin in Claude Code, which already comes with its MCP:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;/plugin install figma@claude-plugins-official&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After that we created a new project in Figma and started gathering references. Besides suzuori&#39;s page, we added omdb, the osu! website itself and the page for the anime 11eyes. The idea was never to copy any of them, just to use them as reference.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dasdwqdf.vhdn.com.br/en/posts/como-foi-criar-este-site/img/referencias.png&quot; alt=&quot;References gathered in Figma: suzuori&amp;#39;s blog, omdb, osu! and 11eyes&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We asked Claude to put together a few proposals based on that. First came three color palettes, and the winner was &quot;Céu Azul&quot; (sky blue), a lavender background with purple, pink and a very classic link blue. With the palette chosen, we asked for a second round, this time with four different layouts: a Windows 98 style window, a lined notebook with tabs, an &quot;HTML 1999&quot; one with tables and a serif font, and one with RPG dialog boxes, with stats and an inventory.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dasdwqdf.vhdn.com.br/en/posts/como-foi-criar-este-site/img/propostas-de-design.png&quot; alt=&quot;First design proposals&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;moving-to-penpot&quot;&gt;Moving to Penpot&lt;/h2&gt;
&lt;p&gt;Halfway through, we hit the call limit of the Figma MCP. That&#39;s when Maot suggested Penpot, a design tool similar to Figma, but free and open source, which also has an MCP so Claude can talk to it.&lt;/p&gt;
&lt;p&gt;Unlike Figma&#39;s, the Penpot MCP runs on your own machine. The first step is to download and start the server, which takes a single command:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot; data-prompt=&quot;true&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; -y @penpot/mcp@latest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This command starts two addresses: one at &lt;code&gt;localhost:4400&lt;/code&gt;, with the plugin that goes inside Penpot, and another at &lt;code&gt;localhost:4401&lt;/code&gt;, which is the MCP itself. With it up, all that&#39;s left is to introduce the server to Claude Code:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot; data-prompt=&quot;true&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;claude&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; mcp add penpot -t http http://localhost:4401/mcp&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, inside Penpot, just load the plugin from &lt;code&gt;http://localhost:4400/manifest.json&lt;/code&gt; and click &quot;Connect to MCP server&quot;. From then on Claude can read and draw directly in your file, as long as the Penpot tab stays open with the plugin running.&lt;/p&gt;
&lt;h2 id=&quot;choosing-the-design&quot;&gt;Choosing the design&lt;/h2&gt;
&lt;p&gt;With the four layouts side by side, the one that won me over was HTML 1999. But I still wanted a dark mode, so we tested a few more things on top of it: six color schemes and twelve font pairings.&lt;/p&gt;
&lt;p&gt;In the end there were two themes. The dark one uses the colors of my terminal, kitty, with a gray background, white text and that green cursor. The light one is Lavanda (lavender), which came from the Céu Azul palette. For fonts, we went with JetBrains Mono for headings and Tinos for body text, which looks a lot like the Times New Roman of the old days.&lt;/p&gt;
&lt;p&gt;I also took the chance to trim a few things by hand. Out went the &quot;under construction&quot; banner, the guestbook and the visitor counter. As much as they&#39;re the face of that era, I wanted a truly static site, with nothing that needed a server. The only very 2000s thing that stayed was the 88x31 button, a pixel art terminal with a blinking cursor, which you can find on the About page.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dasdwqdf.vhdn.com.br/en/posts/como-foi-criar-este-site/img/modelos-finais.jpg&quot; alt=&quot;Final designs in Penpot&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;from-design-to-code&quot;&gt;From design to code&lt;/h2&gt;
&lt;p&gt;Actually implementing it was the easiest part. I wanted to write posts in Markdown and end up with only static files, no database and no server running anything. We looked at a few options, like Hugo and Eleventy, and ended up going with &lt;a rel=&quot;external&quot; href=&quot;https://www.getzola.org/&quot;&gt;Zola&lt;/a&gt;, a static site generator written in Rust. It&#39;s a single binary with no dependencies, and it comes with almost everything ready: code highlighting, feeds, a search index, categories and tags.&lt;/p&gt;
&lt;p&gt;The workflow is pretty simple. While I write, I keep a local server running, which reloads the page by itself every time I save a file. When everything looks right, the build generates the &lt;code&gt;public/&lt;/code&gt; folder with the finished site:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot; data-prompt=&quot;true&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;zola&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; serve&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;zola&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; build&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From there, we turned the Penpot design into HTML and CSS pretty much screen by screen: the Home page, the post list with filters and search, the post page with a table of contents and code blocks, and the About page. The colors of both themes became variables at the top of the CSS, so switching themes is just swapping the set of variables. After that we kept polishing the texts little by little, in Portuguese and in English.&lt;/p&gt;
&lt;p&gt;A few rules guided everything. The site has to work without JavaScript, and the little that exists is only for the theme button, the copy code button and the search, which runs entirely in the browser on top of an index generated by Zola itself. There are also no trackers and nothing loaded from elsewhere: even the fonts live on the site itself.&lt;/p&gt;
&lt;p&gt;So I wouldn&#39;t have to set everything up by hand for each post, I also got a little script that creates the post folder, with the front matter already filled in and a folder for images. This very text was born with it:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot; data-prompt=&quot;true&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;./novo-post.sh&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; -c pessoal -t &amp;quot;zola,penpot&amp;quot; &amp;quot;Como foi criar este site&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, the site is hosted on Cloudflare Workers, serving only the static files, with no code running on the server. Publishing a new version means generating the build and sending the folder there:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot; data-prompt=&quot;true&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;zola&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; build&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;z-7&quot;&gt; npx&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; wrangler deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The result is what you&#39;re looking at right now on your screen.&lt;/p&gt;
&lt;p&gt;Thanks for reading.&lt;/p&gt;
</content>
        
    </entry>
</feed>
