<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kanvo Development Journal</title>
    <link>https://kanvo-tech.com/journal</link>
    <atom:link href="https://kanvo-tech.com/journal/rss.xml" rel="self" type="application/rss+xml" />
    <description>A behind-the-scenes look at how Kanvo gets built.</description>
    <language>en-us</language>
    <lastBuildDate>Wed, 26 Aug 2026 01:30:13 GMT</lastBuildDate>
    <item>
      <title>One bucket, many businesses: how Kanvo isolates customer files</title>
      <link>https://kanvo-tech.com/journal/r2-file-storage-tenant-isolation</link>
      <guid isPermaLink="true">https://kanvo-tech.com/journal/r2-file-storage-tenant-isolation</guid>
      <pubDate>Thu, 09 Jul 2026 12:00:00 GMT</pubDate>
      <description>Every contractor on Kanvo uploads job photos, signed agreements, and equipment records. Here is how those files stay separated — and why one bucket beat one bucket per customer.</description>
    </item>
    <item>
      <title>Moving Kanvo to Cloudflare Workers, and what broke</title>
      <link>https://kanvo-tech.com/journal/cloudflare-workers-migration</link>
      <guid isPermaLink="true">https://kanvo-tech.com/journal/cloudflare-workers-migration</guid>
      <pubDate>Thu, 18 Jun 2026 12:00:00 GMT</pubDate>
      <description>Migrating Kanvo CRM onto the Workers runtime meant giving up three dependencies that quietly assumed a Node process. Here is what each cost, and what replaced it.</description>
    </item>
  </channel>
</rss>
