<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>ARKIVE</title><description>The public journal of Project Sidekick. Essays, plans, decisions, builds, and notes — written while building a personal operating system in the open.</description><link>https://arkive.blog/</link><item><title>Implementation Plan</title><link>https://arkive.blog/plans/implementation-plan/</link><guid isPermaLink="true">https://arkive.blog/plans/implementation-plan/</guid><description>Tasks are grouped into phases. Each phase is a shippable milestone — by the end of it, something real and working exists that you can use, demo, or build on top of. Phases are sequenced to minimize…</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Sidekick Phase0 Plan</title><link>https://arkive.blog/plans/sidekick-phase0-plan/</link><guid isPermaLink="true">https://arkive.blog/plans/sidekick-phase0-plan/</guid><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 1 — Supabase &amp; Auth Shell: Implementation Plan</title><link>https://arkive.blog/plans/sidekick-phase1-plan/</link><guid isPermaLink="true">https://arkive.blog/plans/sidekick-phase1-plan/</guid><description>By the end of this phase you can:</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Auth</title><link>https://arkive.blog/decisions/auth/</link><guid isPermaLink="true">https://arkive.blog/decisions/auth/</guid><description>User profiles are created by a Postgres trigger, not an API route.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Copy</title><link>https://arkive.blog/decisions/copy/</link><guid isPermaLink="true">https://arkive.blog/decisions/copy/</guid><description>All user-visible strings (labels, error messages, button text, page titles, navigation items, etc.) live in `packages/copy`. Source files never contain hardcoded strings.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Error Handling</title><link>https://arkive.blog/decisions/error-handling-and-instrumentation/</link><guid isPermaLink="true">https://arkive.blog/decisions/error-handling-and-instrumentation/</guid><description>Some failures should crash the process or return an error immediately:</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Standards &amp; Guidelines</title><link>https://arkive.blog/decisions/standards-and-guidelines/</link><guid isPermaLink="true">https://arkive.blog/decisions/standards-and-guidelines/</guid><description>TypeScript types are erased at runtime. They cannot be used to validate data that arrives from outside the codebase — user inputs, API request bodies, query parameters, external API responses, and …</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Supabase &amp; API</title><link>https://arkive.blog/decisions/supabase-and-api-related/</link><guid isPermaLink="true">https://arkive.blog/decisions/supabase-and-api-related/</guid><description>Current API routes live at `/api/` with no version prefix. Versioning (`/api/v1/`, `/api/v2/`) is deferred.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Tooling</title><link>https://arkive.blog/decisions/tooling-decisions/</link><guid isPermaLink="true">https://arkive.blog/decisions/tooling-decisions/</guid><description>What we chose: Corepack (`corepack enable` + `corepack use pnpm@latest`) rather than `npm install -g pnpm`.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Config Files Explained</title><link>https://arkive.blog/builds/00-config-files-explained/</link><guid isPermaLink="true">https://arkive.blog/builds/00-config-files-explained/</guid><description>```yaml</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Checkpoint A</title><link>https://arkive.blog/builds/01-checkpoint-a-walkthrough/</link><guid isPermaLink="true">https://arkive.blog/builds/01-checkpoint-a-walkthrough/</guid><description>Verify your environment:</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Checkpoint B</title><link>https://arkive.blog/builds/02-checkpoint-b-walkthrough/</link><guid isPermaLink="true">https://arkive.blog/builds/02-checkpoint-b-walkthrough/</guid><description>Create `tsconfig.base.json` at the repo root. This is the single source of truth for TypeScript settings shared across every package.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Checkpoint C</title><link>https://arkive.blog/builds/03-checkpoint-c-walkthrough/</link><guid isPermaLink="true">https://arkive.blog/builds/03-checkpoint-c-walkthrough/</guid><description>```bash</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Checkpoint D</title><link>https://arkive.blog/builds/04-checkpoint-d-walkthrough/</link><guid isPermaLink="true">https://arkive.blog/builds/04-checkpoint-d-walkthrough/</guid><description>Create `.env.example` at the repo root. This file is safe to commit — it contains no real values, only variable names and documentation.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Phase 1 Walkthrough</title><link>https://arkive.blog/builds/walkthrough/</link><guid isPermaLink="true">https://arkive.blog/builds/walkthrough/</guid><description>This guide walks through reproducing Phase 1 step by step. It assumes you have completed Phase 0: the monorepo is set up with Turborepo, pnpm workspaces, TypeScript, ESLint, Prettier, and `apps/web…</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Architecture Handover</title><link>https://arkive.blog/notes/architecture-handover/</link><guid isPermaLink="true">https://arkive.blog/notes/architecture-handover/</guid><description>This application is a modular, API-first productivity platform built as:</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Architecture Overview</title><link>https://arkive.blog/notes/architecture-overview/</link><guid isPermaLink="true">https://arkive.blog/notes/architecture-overview/</guid><description>A monorepo is a single git repository that contains multiple applications and shared packages. Sidekick has:</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Authentication</title><link>https://arkive.blog/notes/auth/</link><guid isPermaLink="true">https://arkive.blog/notes/auth/</guid><description>This document explains authentication from first principles, then shows how Supabase implements it and how Sidekick&apos;s architecture builds on top of it.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Next.js</title><link>https://arkive.blog/notes/nextjs/</link><guid isPermaLink="true">https://arkive.blog/notes/nextjs/</guid><description>This document covers the Next.js App Router patterns that come up repeatedly in Sidekick. It focuses on the &quot;why&quot; behind each concept, not just the &quot;what&quot;.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Packages</title><link>https://arkive.blog/notes/packages/</link><guid isPermaLink="true">https://arkive.blog/notes/packages/</guid><description>This document covers how packages in a pnpm monorepo expose their API, declare dependencies, and share code through workspace linking and hoisting.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Supabase</title><link>https://arkive.blog/notes/supabase/</link><guid isPermaLink="true">https://arkive.blog/notes/supabase/</guid><description>This document explains the key Supabase and database concepts introduced in Phase 1, with enough context that you understand not just what to do but why each piece exists.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Tooling</title><link>https://arkive.blog/notes/tooling/</link><guid isPermaLink="true">https://arkive.blog/notes/tooling/</guid><description>This document covers the monorepo tooling decisions introduced in Phase 1: pnpm flags, Turborepo configuration, TypeScript module resolution, ESLint setup, and package conventions.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>TypeScript</title><link>https://arkive.blog/notes/typescript/</link><guid isPermaLink="true">https://arkive.blog/notes/typescript/</guid><description>This document covers TypeScript compilation concepts and bundler behaviour as they apply to the Sidekick monorepo.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Vercel</title><link>https://arkive.blog/notes/vercel/</link><guid isPermaLink="true">https://arkive.blog/notes/vercel/</guid><description>This document covers what Vercel provides out of the box and where its built-in capabilities are sufficient vs. where a dedicated tool (like Sentry) becomes necessary.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Building in the Margins: Why I’m Spending the Next 3 Years Creating &quot;Sidekick&quot;</title><link>https://arkive.blog/essays/kickoff/</link><guid isPermaLink="true">https://arkive.blog/essays/kickoff/</guid><description>Why I&apos;m spending the next 3 years building Sidekick in the open — mastering the full stack without vibe-coding.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate></item></channel></rss>