<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Architecture on vanityURLs</title><link>https://vanityurls.link/en/tags/architecture/</link><description>Recent content in Architecture on vanityURLs</description><generator>Hugo</generator><language>en-CA</language><lastBuildDate>Sun, 07 Jun 2026 18:08:29 -0400</lastBuildDate><atom:link href="https://vanityurls.link/en/tags/architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>Architecture decisions belong with the code</title><link>https://vanityurls.link/en/blog/architecture-decisions-in-the-code-repository/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/architecture-decisions-in-the-code-repository/</guid><description>&lt;p&gt;A setup page should tell an operator what to do.&lt;/p&gt;
&lt;p&gt;It should not carry the full history of why the Worker, installer, schema, release automation, and runtime security rules have their current shape. That history still matters. It belongs beside the implementation.&lt;/p&gt;
&lt;p&gt;vanityURLs keeps product-level decisions as architecture decision records in the code repository. The public docs stay operational. The code repo keeps the rationale that future maintainers will need when the next change looks obvious but is not.&lt;/p&gt;</description></item><item><title>From redirect file to Worker runtime</title><link>https://vanityurls.link/en/blog/evolution-to-worker-runtime/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/evolution-to-worker-runtime/</guid><description>&lt;p&gt;vanityURLs started with a deliberately small idea: a short domain, a text file, and redirects that could be reviewed in Git.&lt;/p&gt;
&lt;p&gt;That first version mattered because it proved the core principle. A link shortener does not need to be a platform you rent from somebody else. It can be infrastructure you own.&lt;/p&gt;
&lt;h2 id="the-early-shape"&gt;The early shape&lt;/h2&gt;
&lt;p&gt;The earliest implementation leaned on Cloudflare Pages and static redirect behavior. That was enough for simple aliases, but it also exposed the first limits:&lt;/p&gt;</description></item><item><title>The current v8s architecture</title><link>https://vanityurls.link/en/blog/current-architecture/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://vanityurls.link/en/blog/current-architecture/</guid><description>&lt;p&gt;The current v8s release is built around a small contract: keep the runtime simple, keep the source of truth in Git, and push abuse filtering as close to the edge as possible.&lt;/p&gt;
&lt;h2 id="the-instance-model"&gt;The instance model&lt;/h2&gt;
&lt;p&gt;An instance has two kinds of files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;defaults/&lt;/code&gt; contains the product defaults, public operational pages, blocklist defaults, robots and LLM crawler guidance, and scripts that should be updated from upstream&lt;/li&gt;
&lt;li&gt;&lt;code&gt;custom/&lt;/code&gt; contains the instance-owned links, schedules, policy replacement, branding, legal pages, and any intentionally local public files&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That split is the upgrade story. If instance owners keep their work in &lt;code&gt;custom/&lt;/code&gt;, future releases can refresh &lt;code&gt;defaults/&lt;/code&gt; and &lt;code&gt;scripts/&lt;/code&gt; without trampling local content.&lt;/p&gt;</description></item></channel></rss>