The Ship Stack / Current

The Ship Stack.

What I use to build, run, and ship Shippopotamus, DiveJourney, Kitecraft, ShipFoundry, and this site.

Last verified
Core defaults
23
Components
58
Products
5

01

Current changes

Changes to the stack.

New additions

OrbStack (local dev)

I am moving local containers to OrbStack because it starts faster, uses much less memory, and leaves more of the Mac available for coding agents and product services.

View change in Fleet Log

Oxlint

I am adding Oxlint because it is unbelievably faster than ESLint. On large repositories, the difference is immediate and makes constant linting practical.

View change in Fleet Log

Oxfmt

I am adding Oxfmt because it is unbelievably faster than Prettier. Repo-wide formatting becomes a normal part of the engineering loop instead of something coding agents have to wait on.

View change in Fleet Log

Items being replaced

ESLint

ESLint Oxlint

I am replacing ESLint because Oxlint is unbelievably faster while covering the rules I actually rely on.

View change in Fleet Log

Prettier

Prettier Oxfmt

I am replacing Prettier because Oxfmt is unbelievably faster and makes repo-wide formatting feel nearly instant.

View change in Fleet Log

Docker Desktop (local dev)

Docker Desktop (local dev) OrbStack

I am replacing Docker Desktop because it uses too much local memory for work that OrbStack now handles faster and more efficiently.

View change in Fleet Log

02

Across the fleet

Five products. One operating stack.

03

The Stack

Opinionated by default.

Software and services used by each product
Stack item DiveJourneyShipFoundryKitecraftShippopotamusjohnpotess.com
Runtime and frameworks
Bun Bun is default for DiveJourney Bun is default for ShipFoundry Bun is default for Kitecraft Bun is default for Shippopotamus Bun is default for johnpotess.com
Node.js Node.js is specialized for DiveJourney Node.js is specialized for ShipFoundry Node.js is specialized for Kitecraft Node.js is specialized for Shippopotamus Node.js is specialized for johnpotess.com
TypeScript TypeScript is default for DiveJourney TypeScript is default for ShipFoundry TypeScript is default for Kitecraft TypeScript is default for Shippopotamus TypeScript is default for johnpotess.com
Next.js Next.js is default for DiveJourney Next.js is default for ShipFoundry Next.js is default for Kitecraft Next.js is default for Shippopotamus Next.js is not used by johnpotess.com
Astro Astro is not used by DiveJourney Astro is not used by ShipFoundry Astro is not used by Kitecraft Astro is not used by Shippopotamus Astro is specialized for johnpotess.com
React React is default for DiveJourney React is default for ShipFoundry React is default for Kitecraft React is default for Shippopotamus React is default for johnpotess.com
React Native / Expo React Native / Expo is specialized for DiveJourney React Native / Expo is not used by ShipFoundry React Native / Expo is not used by Kitecraft React Native / Expo is not used by Shippopotamus React Native / Expo is not used by johnpotess.com
Interface
Tailwind CSS Tailwind CSS is default for DiveJourney Tailwind CSS is default for ShipFoundry Tailwind CSS is default for Kitecraft Tailwind CSS is default for Shippopotamus Tailwind CSS is not used by johnpotess.com
shadcn/ui + Radix UI shadcn/ui + Radix UI is default for DiveJourney shadcn/ui + Radix UI is default for ShipFoundry shadcn/ui + Radix UI is default for Kitecraft shadcn/ui + Radix UI is default for Shippopotamus shadcn/ui + Radix UI is not used by johnpotess.com
TanStack Query TanStack Query is specialized for DiveJourney TanStack Query is not used by ShipFoundry TanStack Query is not used by Kitecraft TanStack Query is specialized for Shippopotamus TanStack Query is not used by johnpotess.com
Data, auth, and storage
Supabase Supabase is default for DiveJourney Supabase is default for ShipFoundry Supabase is default for Kitecraft Supabase is default for Shippopotamus Supabase is not used by johnpotess.com
PostgreSQL PostgreSQL is default for DiveJourney PostgreSQL is default for ShipFoundry PostgreSQL is default for Kitecraft PostgreSQL is default for Shippopotamus PostgreSQL is not used by johnpotess.com
Drizzle ORM Drizzle ORM is not used by DiveJourney Drizzle ORM is default for ShipFoundry Drizzle ORM is default for Kitecraft Drizzle ORM is default for Shippopotamus Drizzle ORM is not used by johnpotess.com
Kysely Kysely is specialized for DiveJourney Kysely is not used by ShipFoundry Kysely is specialized for Kitecraft Kysely is specialized for Shippopotamus Kysely is not used by johnpotess.com
AI and agents
Agents SDK Agents SDK is not used by DiveJourney Agents SDK is specialized for ShipFoundry Agents SDK is not used by Kitecraft Agents SDK is not used by Shippopotamus Agents SDK is not used by johnpotess.com
OpenRouter OpenRouter is default for DiveJourney OpenRouter is not used by ShipFoundry OpenRouter is default for Kitecraft OpenRouter is default for Shippopotamus OpenRouter is not used by johnpotess.com
Claude Code Claude Code is specialized for DiveJourney Claude Code is specialized for ShipFoundry Claude Code is specialized for Kitecraft Claude Code is specialized for Shippopotamus Claude Code is specialized for johnpotess.com
Codex Codex is default for DiveJourney Codex is default for ShipFoundry Codex is default for Kitecraft Codex is default for Shippopotamus Codex is default for johnpotess.com
MCP MCP is default for DiveJourney MCP is default for ShipFoundry MCP is default for Kitecraft MCP is default for Shippopotamus MCP is not used by johnpotess.com
Langfuse Langfuse is not used by DiveJourney Langfuse is default for ShipFoundry Langfuse is default for Kitecraft Langfuse is default for Shippopotamus Langfuse is not used by johnpotess.com
Planning and development
Linear Linear is default for DiveJourney Linear is default for ShipFoundry Linear is default for Kitecraft Linear is default for Shippopotamus Linear is default for johnpotess.com
Notion Notion is specialized for DiveJourney Notion is specialized for ShipFoundry Notion is specialized for Kitecraft Notion is specialized for Shippopotamus Notion is specialized for johnpotess.com
OrbStack (local dev) OrbStack (local dev) is default for DiveJourney OrbStack (local dev) is default for ShipFoundry OrbStack (local dev) is default for Kitecraft OrbStack (local dev) is default for Shippopotamus OrbStack (local dev) is default for johnpotess.com
Docker Desktop (local dev) Docker Desktop (local dev) is migrating for DiveJourney Docker Desktop (local dev) is migrating for ShipFoundry Docker Desktop (local dev) is migrating for Kitecraft Docker Desktop (local dev) is migrating for Shippopotamus Docker Desktop (local dev) is migrating for johnpotess.com
Podman (VPS) Podman (VPS) is planned for DiveJourney Podman (VPS) is planned for ShipFoundry Podman (VPS) is planned for Kitecraft Podman (VPS) is planned for Shippopotamus Podman (VPS) is planned for johnpotess.com
Hetzner Hetzner is specialized for DiveJourney Hetzner is specialized for ShipFoundry Hetzner is specialized for Kitecraft Hetzner is specialized for Shippopotamus Hetzner is specialized for johnpotess.com
Tailscale (VPS) Tailscale (VPS) is specialized for DiveJourney Tailscale (VPS) is specialized for ShipFoundry Tailscale (VPS) is specialized for Kitecraft Tailscale (VPS) is specialized for Shippopotamus Tailscale (VPS) is specialized for johnpotess.com
Termius (VPS) Termius (VPS) is specialized for DiveJourney Termius (VPS) is specialized for ShipFoundry Termius (VPS) is specialized for Kitecraft Termius (VPS) is specialized for Shippopotamus Termius (VPS) is specialized for johnpotess.com
Hosting and integrations
Vercel Vercel is default for DiveJourney Vercel is default for ShipFoundry Vercel is default for Kitecraft Vercel is default for Shippopotamus Vercel is default for johnpotess.com
Upstash Upstash is not used by DiveJourney Upstash is default for ShipFoundry Upstash is default for Kitecraft Upstash is default for Shippopotamus Upstash is not used by johnpotess.com
Stripe Stripe is default for DiveJourney Stripe is default for ShipFoundry Stripe is default for Kitecraft Stripe is default for Shippopotamus Stripe is not used by johnpotess.com
Resend Resend is default for DiveJourney Resend is default for ShipFoundry Resend is not used by Kitecraft Resend is default for Shippopotamus Resend is not used by johnpotess.com
Slack Slack is specialized for DiveJourney Slack is specialized for ShipFoundry Slack is specialized for Kitecraft Slack is not used by Shippopotamus Slack is not used by johnpotess.com
LaunchDarkly LaunchDarkly is not used by DiveJourney LaunchDarkly is specialized for ShipFoundry LaunchDarkly is not used by Kitecraft LaunchDarkly is specialized for Shippopotamus LaunchDarkly is not used by johnpotess.com
c15t c15t is specialized for DiveJourney c15t is specialized for ShipFoundry c15t is specialized for Kitecraft c15t is specialized for Shippopotamus c15t is not used by johnpotess.com
Observability
Sentry Sentry is default for DiveJourney Sentry is default for ShipFoundry Sentry is default for Kitecraft Sentry is default for Shippopotamus Sentry is not used by johnpotess.com
PostHog PostHog is default for DiveJourney PostHog is default for ShipFoundry PostHog is default for Kitecraft PostHog is default for Shippopotamus PostHog is not used by johnpotess.com
Umami Umami is not used by DiveJourney Umami is not used by ShipFoundry Umami is not used by Kitecraft Umami is not used by Shippopotamus Umami is specialized for johnpotess.com
OpenTelemetry OpenTelemetry is default for DiveJourney OpenTelemetry is default for ShipFoundry OpenTelemetry is default for Kitecraft OpenTelemetry is default for Shippopotamus OpenTelemetry is not used by johnpotess.com
Axiom Axiom is specialized for DiveJourney Axiom is specialized for ShipFoundry Axiom is specialized for Kitecraft Axiom is not used by Shippopotamus Axiom is not used by johnpotess.com
Better Stack Better Stack is not used by DiveJourney Better Stack is specialized for ShipFoundry Better Stack is not used by Kitecraft Better Stack is not used by Shippopotamus Better Stack is not used by johnpotess.com
Testing and delivery
Playwright Playwright is default for DiveJourney Playwright is default for ShipFoundry Playwright is default for Kitecraft Playwright is default for Shippopotamus Playwright is not used by johnpotess.com
Lighthouse CI Lighthouse CI is default for DiveJourney Lighthouse CI is not used by ShipFoundry Lighthouse CI is not used by Kitecraft Lighthouse CI is default for Shippopotamus Lighthouse CI is not used by johnpotess.com
Axe Core Axe Core is default for DiveJourney Axe Core is default for ShipFoundry Axe Core is default for Kitecraft Axe Core is default for Shippopotamus Axe Core is not used by johnpotess.com
Vitest Vitest is not used by DiveJourney Vitest is not used by ShipFoundry Vitest is not used by Kitecraft Vitest is default for Shippopotamus Vitest is not used by johnpotess.com
Bun Test Bun Test is default for DiveJourney Bun Test is default for ShipFoundry Bun Test is default for Kitecraft Bun Test is not used by Shippopotamus Bun Test is not used by johnpotess.com
Oxc family Oxc family is default for DiveJourney Oxc family is planned for ShipFoundry Oxc family is planned for Kitecraft Oxc family is default for Shippopotamus Oxc family is planned for johnpotess.com
ESLint ESLint is not used by DiveJourney ESLint is migrating for ShipFoundry ESLint is migrating for Kitecraft ESLint is not used by Shippopotamus ESLint is not used by johnpotess.com
Prettier Prettier is not used by DiveJourney Prettier is not used by ShipFoundry Prettier is not used by Kitecraft Prettier is not used by Shippopotamus Prettier is migrating for johnpotess.com
GitHub Actions GitHub Actions is default for DiveJourney GitHub Actions is default for ShipFoundry GitHub Actions is default for Kitecraft GitHub Actions is default for Shippopotamus GitHub Actions is default for johnpotess.com
CodeRabbit PR reviews CodeRabbit PR reviews is specialized for DiveJourney CodeRabbit PR reviews is specialized for ShipFoundry CodeRabbit PR reviews is specialized for Kitecraft CodeRabbit PR reviews is specialized for Shippopotamus CodeRabbit PR reviews is specialized for johnpotess.com
Codex PR reviews Codex PR reviews is default for DiveJourney Codex PR reviews is default for ShipFoundry Codex PR reviews is default for Kitecraft Codex PR reviews is default for Shippopotamus Codex PR reviews is default for johnpotess.com
Blacksmith runners Blacksmith runners is specialized for DiveJourney Blacksmith runners is not used by ShipFoundry Blacksmith runners is not used by Kitecraft Blacksmith runners is not used by Shippopotamus Blacksmith runners is not used by johnpotess.com
Avrea runners Avrea runners is not used by DiveJourney Avrea runners is not used by ShipFoundry Avrea runners is not used by Kitecraft Avrea runners is experiment for Shippopotamus Avrea runners is not used by johnpotess.com
Tenki runners Tenki runners is experiment for DiveJourney Tenki runners is experiment for ShipFoundry Tenki runners is experiment for Kitecraft Tenki runners is experiment for Shippopotamus Tenki runners is not used by johnpotess.com
Publishing and knowledge
Sanity Sanity is not used by DiveJourney Sanity is not used by ShipFoundry Sanity is not used by Kitecraft Sanity is not used by Shippopotamus Sanity is specialized for johnpotess.com
Fumadocs Fumadocs is not used by DiveJourney Fumadocs is specialized for ShipFoundry Fumadocs is not used by Kitecraft Fumadocs is not used by Shippopotamus Fumadocs is not used by johnpotess.com
Maps, media, and collection
Mapbox Mapbox is specialized for DiveJourney Mapbox is not used by ShipFoundry Mapbox is not used by Kitecraft Mapbox is not used by Shippopotamus Mapbox is not used by johnpotess.com

Runtime and frameworks

Bun Why

What it is A JavaScript runtime, package manager, script runner, and test runner.

Why I use it It is extremely fast, compact, edge-friendly, and combines several useful JavaScript utilities into one package.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default · johnpotess.com: Default

Node.js Why

What it is The standard server-side JavaScript runtime and compatibility layer.

Why I use it It remains the JavaScript standard across much of the ecosystem and covers every compatibility path where Bun cannot.

DiveJourney: Specialized · ShipFoundry: Specialized · Kitecraft: Specialized · Shippopotamus: Specialized · johnpotess.com: Specialized

TypeScript Why

What it is Static types for the JavaScript used throughout every product.

Why I use it It is the only sensible choice for agentic engineering because richer types give coding agents more context and make their changes safer.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default · johnpotess.com: Default

Next.js Why

What it is The React framework behind the main web applications and server APIs.

Why I use it It is the full-stack React standard and keeps shipping at the edge of what production web applications can do.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Astro Why

What it is A content-focused web framework that ships very little browser JavaScript.

Why I use it It is a fast, simple static-site builder that still lets me use React exactly where the site needs it.

johnpotess.com: Specialized

React Why

What it is The component system behind the web product interfaces.

Why I use it It is the interface standard, with the ecosystem and reusable patterns needed across every product.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default · johnpotess.com: Default

React Native / Expo Why

What it is React Native and Expo power DiveJourney on iOS and Android.

Why I use it One React-based codebase reaches both iOS and Android without maintaining two native applications.

DiveJourney: Specialized

Interface

Tailwind CSS Why

What it is A utility-first styling system used by the main web applications.

Why I use it It is the styling standard and its explicit utility classes are especially easy for coding agents to understand and edit safely.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

shadcn/ui + Radix UI Why

What it is Source-owned interface components built on accessible primitives.

Why I use it It is a fantastic standard component foundation with accessible primitives, strong defaults, and source code I still own.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

TanStack Query Why

What it is A client-side server-state cache for fetching, mutations, retries, and invalidation.

Why I use it It makes data-heavy screens responsive without rebuilding cache behavior in every component.

DiveJourney: Specialized · Shippopotamus: Specialized

Data, auth, and storage

Supabase Why

What it is The hosted PostgreSQL, authentication, storage, and local development platform behind the products.

Why I use it It combines a fast managed backend, PostgreSQL, authentication, APIs, realtime updates, storage, and Row Level Security in one platform.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

PostgreSQL Why

What it is The relational database that holds product, account, billing, and operational data.

Why I use it It is the relational database standard, it powers Supabase, and it keeps the underlying data portable.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Drizzle ORM Why

What it is A typed TypeScript query and schema layer that stays close to SQL.

Why I use it It gives TypeScript applications typed schemas and queries while staying close enough to SQL to understand what the database is doing.

ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Kysely Why

What it is A type-safe TypeScript query builder that maps database tables and SQL results into application types.

Why I use it It keeps complex SQL explicit while catching table, column, and result-shape mistakes in TypeScript before they reach the database.

DiveJourney: Specialized · Kitecraft: Specialized · Shippopotamus: Specialized

AI and agents

Agents SDK Why

What it is OpenAI's framework for building agents with tools, handoffs, guardrails, and traces.

Why I use it I originally ran most AI features on OpenAI models and have since diversified, but the Agents SDK remains a strong framework for structured agent workflows.

ShipFoundry: Specialized

OpenRouter Why

What it is A single model API that can route requests across several AI providers.

Why I use it It is a gamechanger for quickly testing models across intelligence, speed, price, and provider without rewriting the integration.

DiveJourney: Default · Kitecraft: Default · Shippopotamus: Default

Claude Code Why

What it is Anthropic's command-line coding agent for repository work, implementation, and verification.

Why I use it I use it alongside Codex when a new Claude model is worth testing or subsidized tokens make long engineering sessions practical.

DiveJourney: Specialized · ShipFoundry: Specialized · Kitecraft: Specialized · Shippopotamus: Specialized · johnpotess.com: Specialized

Codex Why

What it is The coding workspace used to inspect repositories, implement changes, and run verification.

Why I use it It is my default and the best agentic engineering environment I have found for connecting product intent to code, tests, and real browser behavior.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default · johnpotess.com: Default

MCP Why

What it is A shared protocol for exposing product tools and data to AI clients.

Why I use it MCP is becoming the standard connection layer for a future where agents operate products and software directly.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Langfuse Why

What it is Prompt, trace, evaluation, and cost observability for AI workflows.

Why I use it LLM usage must be observed, and Langfuse is open source, generous, and purpose-built for traces, prompts, evaluations, and cost.

ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Planning and development

Linear Why

What it is The issue tracker connecting product decisions to implementation and release follow-up.

Why I use it It gives work clear ownership, status, and a durable next action without slowing down daily use.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default · johnpotess.com: Default

Notion Why

What it is The workspace for longer product plans, research, and operating notes.

Why I use it It gives ideas room to develop before they become repository work or a Linear issue.

DiveJourney: Specialized · ShipFoundry: Specialized · Kitecraft: Specialized · Shippopotamus: Specialized · johnpotess.com: Specialized

OrbStack (local dev) Why

What it is The local container and Linux environment replacing Docker Desktop on my Mac.

Why I use it It is dramatically more memory-efficient than Docker Desktop and leaves more of my local machine available for coding agents and product services.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default · johnpotess.com: Default

Docker Desktop (local dev) Why

What it is The existing local container runtime used for databases and supporting product services.

Why I use it It remains installed for compatibility, but OrbStack now does the same local work with much lower memory use and faster startup.

DiveJourney: Migrating · ShipFoundry: Migrating · Kitecraft: Migrating · Shippopotamus: Migrating · johnpotess.com: Migrating

Podman (VPS) Why

What it is A daemonless container engine for running isolated development workloads on Linux servers.

Why I use it It is coming next for VPS coding agents because it provides Docker-compatible containers without a permanently privileged daemon.

DiveJourney: Planned · ShipFoundry: Planned · Kitecraft: Planned · Shippopotamus: Planned · johnpotess.com: Planned

Hetzner Why

What it is Virtual private servers for long-running coding agents, loops, and background engineering work.

Why I use it It provides strong compute value for agent workloads that need to stay alive longer than a local session or serverless function.

DiveJourney: Specialized · ShipFoundry: Specialized · Kitecraft: Specialized · Shippopotamus: Specialized · johnpotess.com: Specialized

Tailscale (VPS) Why

What it is A private mesh network connecting my Mac, phone, and VPS development environments.

Why I use it It gives long-running coding agents and development services stable private access from anywhere without exposing them to the public internet.

DiveJourney: Specialized · ShipFoundry: Specialized · Kitecraft: Specialized · Shippopotamus: Specialized · johnpotess.com: Specialized

Termius (VPS) Why

What it is The SSH client I use to reach VPS development environments from desktop and mobile.

Why I use it It lets me review, restart, and continue long-running agent work from my phone when I am away from the Mac.

DiveJourney: Specialized · ShipFoundry: Specialized · Kitecraft: Specialized · Shippopotamus: Specialized · johnpotess.com: Specialized

Hosting and integrations

Vercel Why

What it is Hosting, preview deployments, server functions, and scheduled routes for the web products.

Why I use it It is the best fit for Next.js and makes previewing, deploying, and shipping web products extremely fast.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default · johnpotess.com: Default

Upstash Why

What it is Managed Redis, rate limiting, and queue-backed delivery for serverless applications.

Why I use it Its serverless Redis, queues, scheduling, and rate limiting cover the coordination jobs that do not belong in PostgreSQL.

ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Stripe Why

What it is Checkout, subscriptions, billing state, and payment webhooks.

Why I use it It is the strongest all-in-one provider for payments, billing, subscriptions, webhooks, and customer self-service.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Resend Why

What it is Transactional email delivery for product and account messages.

Why I use it It is a fantastic developer-first email provider with a clean API that powers transactional email across the products.

DiveJourney: Default · ShipFoundry: Default · Shippopotamus: Default

Slack Why

What it is The alert destination for operational events, product feedback, and workflows that need human attention.

Why I use it It puts urgent system signals where I will actually see and act on them instead of creating another monitoring inbox.

DiveJourney: Specialized · ShipFoundry: Specialized · Kitecraft: Specialized

LaunchDarkly Why

What it is Feature flags and staged rollout controls.

Why I use it It replaces environment-variable flags with proper targeting, staged rollouts, instant kill switches, and safer rollback control.

ShipFoundry: Specialized · Shippopotamus: Specialized

c15t Why

What it is Consent management for analytics, privacy choices, and regional requirements.

Why I use it It is a fast way to keep consent handling consistent and GDPR-aware without rebuilding a compliance system in every product.

DiveJourney: Specialized · ShipFoundry: Specialized · Kitecraft: Specialized · Shippopotamus: Specialized

Observability

Sentry Why

What it is Application errors, traces, releases, and performance context.

Why I use it It is the standard for error tracking and connects failures to the exact release, route, trace, and surrounding events.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

PostHog Why

What it is Product events, funnels, feature usage, and behavioral analytics.

Why I use it It does a bit of everything, but its product analytics, funnels, feature flags, and session evidence make it the best analytics fit for the applications.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Umami Why

What it is Lightweight, privacy-focused traffic analytics for this site.

Why I use it I am trying it on the static personal site because it is lightweight, privacy-focused, and avoids the heavier analytics stack.

johnpotess.com: Specialized

OpenTelemetry Why

What it is A vendor-neutral standard for application traces, metrics, and logs.

Why I use it It is the open standard that lets all observability signals share one instrumentation layer while the backends can change.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Axiom Why

What it is Operational log storage and querying for production systems.

Why I use it It makes traces and logs fast to search without operating a separate ingestion and storage stack.

DiveJourney: Specialized · ShipFoundry: Specialized · Kitecraft: Specialized

Better Stack Why

What it is External uptime checks, heartbeats, incident alerts, and status monitoring.

Why I use it ShipFoundry uses it to prove scheduled and production systems are still alive from outside the application, and the monitoring experience is excellent.

ShipFoundry: Specialized

Testing and delivery

Playwright Why

What it is Real-browser automation for product flows, screenshots, accessibility, and smoke tests.

Why I use it It is the browser-automation standard and proves the complete user flow instead of only testing isolated functions.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Lighthouse CI Why

What it is Repeatable browser audits for performance, accessibility, and page quality.

Why I use it It turns performance into a release check when runtimes and frameworks change.

DiveJourney: Default · Shippopotamus: Default

Axe Core Why

What it is The accessibility rules engine used inside automated browser tests.

Why I use it It is the standard automated check for catching common WCAG failures before they become repeated component patterns.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default

Vitest Why

What it is A fast Vite-native unit and integration test runner with a mature testing ecosystem.

Why I use it It provides strong mocking, coverage, browser-like environments, and compatibility for the shared starter test suite.

Shippopotamus: Default

Bun Test Why

What it is The unit test runner built directly into Bun.

Why I use it It starts quickly, needs almost no extra configuration, and keeps everyday tests inside the same runtime used for scripts and packages.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default

Oxc family Why

What it is A fast parser, linter, formatter, and TypeScript-aware toolchain.

Why I use it It is unbelievably faster than the ESLint and Prettier toolchain it replaces. The difference is large enough to change how often linting and formatting can run.

DiveJourney: Default · ShipFoundry: Planned · Kitecraft: Planned · Shippopotamus: Default · johnpotess.com: Planned

ESLint Why

What it is The existing JavaScript and TypeScript linter in repositories not yet moved to Oxlint.

Why I use it It remains only while its rules are transferred without weakening the checks.

ShipFoundry: Migrating · Kitecraft: Migrating

Prettier Why

What it is The formatter still used where Oxfmt has not yet replaced it.

Why I use it It stays until the new formatter can produce stable output without noisy repository-wide changes.

johnpotess.com: Migrating

GitHub Actions Why

What it is Continuous integration, release automation, and scheduled repository work.

Why I use it Checks should run beside the pull request and commit they are evaluating.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default · johnpotess.com: Default

CodeRabbit PR reviews Why

What it is Automated pull request review for bugs, regressions, and code-quality problems.

Why I use it It adds a consistent review pass before a human spends time on the final decision.

DiveJourney: Specialized · ShipFoundry: Specialized · Kitecraft: Specialized · Shippopotamus: Specialized · johnpotess.com: Specialized

Codex PR reviews Why

What it is Repository-aware review of the implementation, tests, product behavior, and release risk.

Why I use it It can connect a code diff to the surrounding system instead of reviewing changed lines in isolation.

DiveJourney: Default · ShipFoundry: Default · Kitecraft: Default · Shippopotamus: Default · johnpotess.com: Default

Blacksmith runners Why

What it is High-performance hosted machines used for selected GitHub Actions jobs.

Why I use it They shorten expensive build and browser workloads when GitHub-hosted machines become the bottleneck.

DiveJourney: Specialized

Avrea runners Why

What it is An external runner lane used during the fleet workflow experiments.

Why I use it It is tracked because runner choice affects delivery speed, reliability, and trust boundaries.

Shippopotamus: Experiment

Tenki runners Why

What it is Managed GitHub Actions runners used for selected small and medium workloads.

Why I use it They provide another cost and performance option while trusted jobs remain explicitly routed.

DiveJourney: Experiment · ShipFoundry: Experiment · Kitecraft: Experiment · Shippopotamus: Experiment

Publishing and knowledge

Sanity Why

What it is The structured-content platform and editing studio behind johnpotess.com.

Why I use it Essays, metadata, translations, and related content need a real content model rather than loose files.

johnpotess.com: Specialized

Fumadocs Why

What it is The documentation framework used for ShipFoundry knowledge and product guidance.

Why I use it It provides a strong public reading and search experience without rebuilding a documentation system.

ShipFoundry: Specialized

Maps, media, and collection

Mapbox Why

What it is Web and native maps, place search, and geographic imagery for DiveJourney.

Why I use it The product needs one geographic foundation across discovery, planning, and the mobile experience.

DiveJourney: Specialized

  • Default

    The canonical starting point. A new fleet product should use it unless there is a clear reason not to.

  • Specialized

    A deliberate product-specific or workload-specific exception. It is not second-class and is not expected everywhere.

  • Experiment

    Actively being evaluated. It is useful enough to run, but not yet a long-term standard.

  • Migrating

    Still present while a replacement is being completed.

  • Planned

    Approved for adoption but not active yet.

04

Retired

No longer in the active stack.

Cloudinary

View change in Fleet Log

Grafana

View change in Fleet Log