# ARKIVE The public journal of Project Sidekick. Essays, plans, decisions, builds, and notes — written while building a personal operating system in the open. ## Entries - [Implementation Plan](https://arkive.blog/plans/implementation-plan/): 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… - [Sidekick Phase0 Plan](https://arkive.blog/plans/sidekick-phase0-plan/): - [Phase 1 — Supabase & Auth Shell: Implementation Plan](https://arkive.blog/plans/sidekick-phase1-plan/): By the end of this phase you can: - [Auth](https://arkive.blog/decisions/auth/): User profiles are created by a Postgres trigger, not an API route. - [Copy](https://arkive.blog/decisions/copy/): All user-visible strings (labels, error messages, button text, page titles, navigation items, etc.) live in `packages/copy`. Source files never contain hardcoded strings. - [Error Handling](https://arkive.blog/decisions/error-handling-and-instrumentation/): Some failures should crash the process or return an error immediately: - [Standards & Guidelines](https://arkive.blog/decisions/standards-and-guidelines/): 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 … - [Supabase & API](https://arkive.blog/decisions/supabase-and-api-related/): Current API routes live at `/api/` with no version prefix. Versioning (`/api/v1/`, `/api/v2/`) is deferred. - [Tooling](https://arkive.blog/decisions/tooling-decisions/): What we chose: Corepack (`corepack enable` + `corepack use pnpm@latest`) rather than `npm install -g pnpm`. - [Config Files Explained](https://arkive.blog/builds/00-config-files-explained/): ```yaml - [Checkpoint A](https://arkive.blog/builds/01-checkpoint-a-walkthrough/): Verify your environment: - [Checkpoint B](https://arkive.blog/builds/02-checkpoint-b-walkthrough/): Create `tsconfig.base.json` at the repo root. This is the single source of truth for TypeScript settings shared across every package. - [Checkpoint C](https://arkive.blog/builds/03-checkpoint-c-walkthrough/): ```bash - [Checkpoint D](https://arkive.blog/builds/04-checkpoint-d-walkthrough/): Create `.env.example` at the repo root. This file is safe to commit — it contains no real values, only variable names and documentation. - [Phase 1 Walkthrough](https://arkive.blog/builds/walkthrough/): 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… - [Architecture Handover](https://arkive.blog/notes/architecture-handover/): This application is a modular, API-first productivity platform built as: - [Architecture Overview](https://arkive.blog/notes/architecture-overview/): A monorepo is a single git repository that contains multiple applications and shared packages. Sidekick has: - [Authentication](https://arkive.blog/notes/auth/): This document explains authentication from first principles, then shows how Supabase implements it and how Sidekick's architecture builds on top of it. - [Next.js](https://arkive.blog/notes/nextjs/): This document covers the Next.js App Router patterns that come up repeatedly in Sidekick. It focuses on the "why" behind each concept, not just the "what". - [Packages](https://arkive.blog/notes/packages/): This document covers how packages in a pnpm monorepo expose their API, declare dependencies, and share code through workspace linking and hoisting. - [Supabase](https://arkive.blog/notes/supabase/): 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. - [Tooling](https://arkive.blog/notes/tooling/): This document covers the monorepo tooling decisions introduced in Phase 1: pnpm flags, Turborepo configuration, TypeScript module resolution, ESLint setup, and package conventions. - [TypeScript](https://arkive.blog/notes/typescript/): This document covers TypeScript compilation concepts and bundler behaviour as they apply to the Sidekick monorepo. - [Vercel](https://arkive.blog/notes/vercel/): 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. - [Building in the Margins: Why I’m Spending the Next 3 Years Creating "Sidekick"](https://arkive.blog/essays/kickoff/): Why I'm spending the next 3 years building Sidekick in the open — mastering the full stack without vibe-coding.