Overview

Click a box to filter by status.

Browse the registry

Filter by status, distribution, category, tag, or search.

All apps

Loading registry…

Needs attention

Apps that are prototype, active-dev, parked, stuck, or testflight.

Update guide

For humans and agents (Codex, Claude Code, …).

Update only data/apps.json. The dashboard renders itself from that file. Do not edit index.html, styles.css, or scripts/app.js to change app data, and never modify any Xcode app project.

To change an app, find its object in the apps array and edit its fields. Keep values within the allowed lists below. When a fact is unknown, leave the field blank ("") or use "unknown" rather than guessing. Update metadata.lastUpdated whenever you make a change.

Allowed status values: idea, prototype, active-dev, testflight, live, maintenance, phone-only, work-only, parked, stuck, retired.

Allowed distribution values: App Store, TestFlight, Local only, Phone only, Work only, Unlisted App Store, Private Apple School Manager, Web, Unknown.

Tags: each app has a tags array. Two global tags are in use — "work" and "Stoked Logic" — and an app may carry both. They show as clickable chips on each card.

Auto-managed: the evidence object on each card and the top-level unmatchedProjects array are written by scripts/scan-projects.mjs. Don't hand-edit them — and note the scanner never changes status, distribution, notes, tags, or next action.

Example — mark an app live:

{
  "name": "Example App",
  "status": "live",
  "distribution": "App Store",
  "version": "1.0"
}

Example — add a new app (append to the apps array):

{
  "name": "New App Name",
  "status": "idea",
  "distribution": "Unknown",
  "category": "utility",
  "repo": "unknown",
  "path": "unknown",
  "bundleId": "",
  "version": "unknown",
  "lastActivity": "",
  "nextAction": "Define scope.",
  "notes": ["First note about the app."],
  "links": []
}

Full instructions, more examples, and the git + Cloudflare Pages workflow live in README.md.