<?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 Arivu</title>
		<link>https://arivu.app/tags/architecture/</link>
		<description>Recent content in Architecture on Arivu</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Sun, 08 Feb 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://arivu.app/tags/architecture/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Deep Modularization, Reliability Engineering, and Admin Tools</title>
				<link>https://arivu.app/chronicle/architecture-reliability/</link>
				<pubDate>Sun, 08 Feb 2026 00:00:00 +0000</pubDate>
				<guid>https://arivu.app/chronicle/architecture-reliability/</guid>
				<description>&lt;p&gt;Our &lt;a href=&#34;https://arivu.app/chronicle/production-hardening/&#34;&gt;earlier hardening pass&lt;/a&gt; laid the groundwork - security, speed, and an initial split into smaller modules. This update goes deeper. We&amp;rsquo;ve broken the backend into fully independent domains, added retry and conflict handling for reliability, built a testing infrastructure that catches problems before you see them, and shipped an admin dashboard for controlled early access.&lt;/p&gt;&#xA;&lt;svg viewBox=&#34;0 0 700 260&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;max-width: 100%; height: auto; display: block; margin: 2rem auto;&#34; role=&#34;img&#34; aria-labelledby=&#34;chronicle-architecture-reliability-1-title chronicle-architecture-reliability-1-desc&#34;&gt;&#xA;  &lt;title id=&#34;chronicle-architecture-reliability-1-title&#34;&gt;Deep Modularization, Reliability Engineering, and Admin Tools, diagram 1&lt;/title&gt;&#xA;  &lt;desc id=&#34;chronicle-architecture-reliability-1-desc&#34;&gt;Historical diagram 1 accompanying the Chronicle post Deep Modularization, Reliability Engineering, and Admin Tools.&lt;/desc&gt;&#xA;  &lt;rect x=&#34;30&#34; y=&#34;20&#34; width=&#34;640&#34; height=&#34;60&#34; fill=&#34;#FDFCF9&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;text x=&#34;350&#34; y=&#34;42&#34; font-family=&#34;&#39;Geist Mono&#39;, monospace&#34; font-size=&#34;11&#34; fill=&#34;#2F2E2B&#34; text-anchor=&#34;middle&#34; font-weight=&#34;bold&#34;&gt;BEFORE: SINGLE LARGE BACKEND&lt;/text&gt;&#xA;  &lt;text x=&#34;350&#34; y=&#34;62&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;10&#34; fill=&#34;#2F2E2B&#34; text-anchor=&#34;middle&#34;&gt;Everything in one place - hard to test, risky to change&lt;/text&gt;&#xA;  &lt;line x1=&#34;350&#34; y1=&#34;80&#34; x2=&#34;350&#34; y2=&#34;110&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;polygon points=&#34;344,105 356,105 350,115&#34; fill=&#34;#2F2E2B&#34;/&gt;&#xA;  &lt;rect x=&#34;30&#34; y=&#34;120&#34; width=&#34;130&#34; height=&#34;55&#34; fill=&#34;#CF3F1E&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;text x=&#34;95&#34; y=&#34;143&#34; font-family=&#34;&#39;Geist Mono&#39;, monospace&#34; font-size=&#34;9&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34; font-weight=&#34;bold&#34;&gt;AUTH&lt;/text&gt;&#xA;  &lt;text x=&#34;95&#34; y=&#34;163&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;9&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;Login, lockout, email&lt;/text&gt;&#xA;  &lt;rect x=&#34;170&#34; y=&#34;120&#34; width=&#34;130&#34; height=&#34;55&#34; fill=&#34;#7E2412&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;text x=&#34;235&#34; y=&#34;143&#34; font-family=&#34;&#39;Geist Mono&#39;, monospace&#34; font-size=&#34;9&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34; font-weight=&#34;bold&#34;&gt;BOOKMARKS&lt;/text&gt;&#xA;  &lt;text x=&#34;235&#34; y=&#34;163&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;9&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;CRUD, search, AI&lt;/text&gt;&#xA;  &lt;rect x=&#34;310&#34; y=&#34;120&#34; width=&#34;130&#34; height=&#34;55&#34; fill=&#34;#7E2412&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;text x=&#34;375&#34; y=&#34;143&#34; font-family=&#34;&#39;Geist Mono&#39;, monospace&#34; font-size=&#34;9&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34; font-weight=&#34;bold&#34;&gt;ANALYTICS&lt;/text&gt;&#xA;  &lt;text x=&#34;375&#34; y=&#34;163&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;9&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;Insights, graphs&lt;/text&gt;&#xA;  &lt;rect x=&#34;450&#34; y=&#34;120&#34; width=&#34;110&#34; height=&#34;55&#34; fill=&#34;#2F2E2B&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;text x=&#34;505&#34; y=&#34;143&#34; font-family=&#34;&#39;Geist Mono&#39;, monospace&#34; font-size=&#34;9&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34; font-weight=&#34;bold&#34;&gt;COLLECTIONS&lt;/text&gt;&#xA;  &lt;text x=&#34;505&#34; y=&#34;163&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;9&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;Organize, filter&lt;/text&gt;&#xA;  &lt;rect x=&#34;570&#34; y=&#34;120&#34; width=&#34;100&#34; height=&#34;55&#34; fill=&#34;#2F2E2B&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;text x=&#34;620&#34; y=&#34;143&#34; font-family=&#34;&#39;Geist Mono&#39;, monospace&#34; font-size=&#34;9&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34; font-weight=&#34;bold&#34;&gt;ADMIN&lt;/text&gt;&#xA;  &lt;text x=&#34;620&#34; y=&#34;163&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;9&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;Invites, health&lt;/text&gt;&#xA;  &lt;rect x=&#34;30&#34; y=&#34;195&#34; width=&#34;640&#34; height=&#34;50&#34; fill=&#34;#FDFCF9&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;text x=&#34;350&#34; y=&#34;218&#34; font-family=&#34;&#39;Geist Mono&#39;, monospace&#34; font-size=&#34;10&#34; fill=&#34;#2F2E2B&#34; text-anchor=&#34;middle&#34; font-weight=&#34;bold&#34;&gt;RELIABILITY LAYER: RETRY, CONFLICT HANDLING, RATE LIMITING&lt;/text&gt;&#xA;  &lt;text x=&#34;350&#34; y=&#34;235&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;10&#34; fill=&#34;#2F2E2B&#34; text-anchor=&#34;middle&#34;&gt;Graceful recovery &amp;amp; protection across all domains&lt;/text&gt;&#xA;&lt;/svg&gt;&#xA;&lt;h2 id=&#34;full-domain-separation&#34;&gt;Full Domain Separation&lt;/h2&gt;&#xA;&lt;p&gt;The initial hardening split out a few core services. This time, we went further - every major feature area now lives in its own domain with clear boundaries. Authentication has its own dedicated layer, including lockout and email handling. Bookmarks, collections, analytics, import/export, knowledge graph, search, and AI processing are all independent.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Production Hardening: Security, Speed, and Structure</title>
				<link>https://arivu.app/chronicle/production-hardening/</link>
				<pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate>
				<guid>https://arivu.app/chronicle/production-hardening/</guid>
				<description>&lt;p&gt;Arivu is now more secure, faster, and easier to evolve. This update focuses on the invisible infrastructure work that separates a side project from a production-ready product.&lt;/p&gt;&#xA;&lt;p&gt;We completed a comprehensive hardening pass across three domains: authentication security, database performance, and code architecture. Here&amp;rsquo;s what changed and why it matters.&lt;/p&gt;&#xA;&lt;svg viewBox=&#34;0 0 700 140&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; style=&#34;max-width: 100%; height: auto; display: block; margin: 2rem auto;&#34; role=&#34;img&#34; aria-labelledby=&#34;chronicle-production-hardening-1-title chronicle-production-hardening-1-desc&#34;&gt;&#xA;  &lt;title id=&#34;chronicle-production-hardening-1-title&#34;&gt;Production Hardening: Security, Speed, and Structure, diagram 1&lt;/title&gt;&#xA;  &lt;desc id=&#34;chronicle-production-hardening-1-desc&#34;&gt;Historical diagram 1 accompanying the Chronicle post Production Hardening: Security, Speed, and Structure.&lt;/desc&gt;&#xA;  &lt;rect x=&#34;60&#34; y=&#34;40&#34; width=&#34;160&#34; height=&#34;80&#34; fill=&#34;#CF3F1E&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;text x=&#34;140&#34; y=&#34;70&#34; font-family=&#34;&#39;Geist Mono&#39;, monospace&#34; font-size=&#34;12&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34; font-weight=&#34;bold&#34;&gt;SECURITY&lt;/text&gt;&#xA;  &lt;text x=&#34;140&#34; y=&#34;90&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;10&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;Auth hardening&lt;/text&gt;&#xA;  &lt;text x=&#34;140&#34; y=&#34;105&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;10&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;Transport protection&lt;/text&gt;&#xA;  &lt;rect x=&#34;270&#34; y=&#34;40&#34; width=&#34;160&#34; height=&#34;80&#34; fill=&#34;#7E2412&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;text x=&#34;350&#34; y=&#34;70&#34; font-family=&#34;&#39;Geist Mono&#39;, monospace&#34; font-size=&#34;12&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34; font-weight=&#34;bold&#34;&gt;PERFORMANCE&lt;/text&gt;&#xA;  &lt;text x=&#34;350&#34; y=&#34;90&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;10&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;Query optimization&lt;/text&gt;&#xA;  &lt;text x=&#34;350&#34; y=&#34;105&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;10&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;Connection efficiency&lt;/text&gt;&#xA;  &lt;rect x=&#34;480&#34; y=&#34;40&#34; width=&#34;160&#34; height=&#34;80&#34; fill=&#34;#2F2E2B&#34; stroke=&#34;#2F2E2B&#34; stroke-width=&#34;2&#34;/&gt;&#xA;  &lt;text x=&#34;560&#34; y=&#34;70&#34; font-family=&#34;&#39;Geist Mono&#39;, monospace&#34; font-size=&#34;12&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34; font-weight=&#34;bold&#34;&gt;ARCHITECTURE&lt;/text&gt;&#xA;  &lt;text x=&#34;560&#34; y=&#34;90&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;10&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;Modular structure&lt;/text&gt;&#xA;  &lt;text x=&#34;560&#34; y=&#34;105&#34; font-family=&#34;&#39;Geist&#39;, sans-serif&#34; font-size=&#34;10&#34; fill=&#34;#FDFCF9&#34; text-anchor=&#34;middle&#34;&gt;Safer iteration&lt;/text&gt;&#xA;&lt;/svg&gt;&#xA;&lt;h2 id=&#34;security&#34;&gt;Security&lt;/h2&gt;&#xA;&lt;p&gt;Your account is now protected against brute-force password attacks. Repeated failed login attempts trigger a temporary lockout, stopping automated guessing while letting legitimate users recover naturally.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
