# Dashecorp — project brain

> Fresh-agent entry point for the **Dashecorp** portfolio. One fetch
> (`/BRAIN.md`, ~5 KB) gives you the repo manifest, deployed surfaces, and
> conventions specific to this portfolio.
>
> This is the **project brain**. The rig brain (how the agents themselves
> work) lives at <https://rig-research.pages.dev/BRAIN.md>. An agent
> assigned to a Dashecorp repo should fetch **both** at session start
> — rig brain first (platform), project brain second (this portfolio).
>
> Compiled from `facts/*.yaml`. Do not hand-edit BRAIN.md — regenerate
> with `npm run brain`. CI runs `--check` and fails on drift.

## What this is

The Dashecorp product portfolio is a collection of iOS apps built on
SwiftUI + Xcode Cloud + RevenueCat, shipped to the App Store. The
portfolio uses the shared rig for autonomous engineering — any repo
with an `agent-ready` issue is picked up by rig-dev and landed via
rig-reviewer.

All production apps target recent iOS versions, share a handful of
cross-cutting conventions (RGB-only app icons, squash-merge,
RevenueCat entitlement mapping), and use Xcode Cloud for CI and
TestFlight/App Store distribution.


## Published surfaces

### Canonical project-brain entry point (this file, rendered)
- **URL:** https://dashecorp-docs.pages.dev/brain/
- **Raw:** https://dashecorp-docs.pages.dev/BRAIN.md
- **Type:** markdown

### Rendered Starlight site — docs, runbooks, conventions
- **URL:** https://dashecorp-docs.pages.dev
- **Type:** astro-starlight
- **Source:** dashecorp/dashecorp-docs

### Rig platform brain — how the agents themselves work
- **URL:** https://rig-research.pages.dev/BRAIN.md
- **Type:** markdown
- **Note:** Every agent assigned to a Dashecorp repo fetches BOTH brains at session start. Rig brain first (platform), project brain second (this portfolio). The rig brain is invariant across projects.

### LLM site map (project docs)
- **URL:** https://dashecorp-docs.pages.dev/llms.txt
- **Type:** llms-txt

### Full content dump (single-shot ingestion)
- **URL:** https://dashecorp-docs.pages.dev/llms-full.txt
- **Type:** llms-full-txt

## Repos

8 repos make up the Dashecorp portfolio.

| Repo | Purpose | Stack | Status |
|---|---|---|---|
| [`Stig-Johnny/cutie`](https://github.com/Stig-Johnny/cutie) | Cuti-E — admin iOS app. RevenueCat SDK integrated (PR 420); webhook handler at `/v1/webhook/revenuecat` (PR 419). API key is placeholder (`appl_PLACEHOLDER`) pe | SwiftUI + RevenueCat + Xcode Cloud | active |
| [`Stig-Johnny/fast-e`](https://github.com/Stig-Johnny/fast-e) | Fast-E — iOS app, App Store submission 100 percent ready (all blockers resolved including app privacy labels, published via Playwright). Do NOT submit to App St | SwiftUI + Xcode Cloud | release-ready · held for Cuti-E |
| [`Stig-Johnny/drink-e`](https://github.com/Stig-Johnny/drink-e) | Drink-E — TestFlight-ready as of build 9 (2026-02-24). Do NOT submit to App Store until Cuti-E is released. | SwiftUI + Xcode Cloud | TestFlight · held for Cuti-E |
| [`Stig-Johnny/count-e`](https://github.com/Stig-Johnny/count-e) | Count-E — iOS app. allow_auto_merge enabled. | SwiftUI + Xcode Cloud | active |
| [`dashecorp/dashe-reward-e`](https://github.com/dashecorp/dashe-reward-e) | Reward-E — iOS star rewards app for kids. Live on the App Store as id6756241157. allow_auto_merge enabled. | SwiftUI + Xcode Cloud | active |
| [`Stig-Johnny/heart-e`](https://github.com/Stig-Johnny/heart-e) | Heart-E — iOS blood pressure & vitals log. Pre-launch (not yet on App Store, no App Store Connect ID assigned). | SwiftUI + Xcode Cloud | pre-launch |
| [`Stig-Johnny/nutri-e`](https://github.com/Stig-Johnny/nutri-e) | Nutri-E — iOS app. | SwiftUI + Xcode Cloud | active |
| [`cuti-e/ios-link-sdk`](https://github.com/cuti-e/ios-link-sdk) | Shared iOS SDK for cross-app linking. Archived — no active development, no rig-reviewer access needed. | Swift Package | archived |

## Per-repo detail

### cutie

**Source:** `Stig-Johnny/cutie`

Cuti-E — admin iOS app. RevenueCat SDK integrated (PR 420); webhook
handler at `/v1/webhook/revenuecat` (PR 419). API key is placeholder
(`appl_PLACEHOLDER`) pending RevenueCat dashboard Phase 0.

**Stack:** SwiftUI + RevenueCat + Xcode Cloud

**Deploy target:** App Store + TestFlight

**Docs** (4 files): architecture.md, index.md, setup.md, troubleshooting.md

Fetch raw via: `gh api repos/Stig-Johnny/cutie/contents/docs/<file>.md --header 'Accept: application/vnd.github.raw'`

**Notes:** First app slated for release. Fast-E / Drink-E blocked until Cuti-E ships.

### fast-e

**Source:** `Stig-Johnny/fast-e` (mirror: https://github.com/dashecorp/dashe-fast-e)

Fast-E — iOS app, App Store submission 100 percent ready (all blockers
resolved including app privacy labels, published via Playwright). Do NOT
submit to App Store until Cuti-E is released.

**Stack:** SwiftUI + Xcode Cloud

**Deploy target:** App Store + TestFlight

**Docs** (4 files): architecture.md, index.md, setup.md, troubleshooting.md

Fetch raw via: `gh api repos/Stig-Johnny/fast-e/contents/docs/<file>.md --header 'Accept: application/vnd.github.raw'`

**Notes:** allow_auto_merge true on repo. Enable-pull-request-automerge action needs the github-script fallback (401 on self-hosted runners otherwise).

### drink-e

**Source:** `Stig-Johnny/drink-e` (mirror: https://github.com/dashecorp/dashe-drink-e)

Drink-E — TestFlight-ready as of build 9 (2026-02-24). Do NOT submit to
App Store until Cuti-E is released.

**Stack:** SwiftUI + Xcode Cloud

**Deploy target:** App Store + TestFlight

**App Store ID:** `6759526344`

**Docs** (4 files): architecture.md, index.md, setup.md, troubleshooting.md

Fetch raw via: `gh api repos/Stig-Johnny/drink-e/contents/docs/<file>.md --header 'Accept: application/vnd.github.raw'`

**Notes:** Issue 1 closed. allow_auto_merge true.

### count-e

**Source:** `Stig-Johnny/count-e` (mirror: https://github.com/dashecorp/dashe-count-e)

Count-E — iOS app. allow_auto_merge enabled.

**Stack:** SwiftUI + Xcode Cloud

**Deploy target:** App Store + TestFlight

**Docs** (4 files): architecture.md, index.md, setup.md, troubleshooting.md

Fetch raw via: `gh api repos/Stig-Johnny/count-e/contents/docs/<file>.md --header 'Accept: application/vnd.github.raw'`

### Reward-E

**Slug:** `reward-e`

**Source:** `dashecorp/dashe-reward-e`

Reward-E — iOS star rewards app for kids. Live on the App Store
as id6756241157. allow_auto_merge enabled.

**Stack:** SwiftUI + Xcode Cloud

**Deploy target:** App Store + TestFlight

**Docs** (5 files): architecture.md, deployment-ordering.md, index.md, setup.md, troubleshooting.md

Fetch raw via: `gh api repos/dashecorp/dashe-reward-e/contents/docs/<file>.md --header 'Accept: application/vnd.github.raw'`

### heart-e

**Source:** `Stig-Johnny/heart-e` (mirror: https://github.com/dashecorp/dashe-heart-e)

Heart-E — iOS blood pressure & vitals log. Pre-launch (not yet on
App Store, no App Store Connect ID assigned).

**Stack:** SwiftUI + Xcode Cloud

**Deploy target:** App Store + TestFlight

### nutri-e

**Source:** `Stig-Johnny/nutri-e` (mirror: https://github.com/dashecorp/dashe-nutri-e)

Nutri-E — iOS app.

**Stack:** SwiftUI + Xcode Cloud

**Deploy target:** App Store + TestFlight

**Docs** (15 files): api.md, app-store.md, architecture.md, cloudflare.md, development.md, index.md, reference.md, security.md, setup.md, style-guide.md, subscriptions.md, testflight.md, troubleshooting.md, validation.md, webhooks.md

Fetch raw via: `gh api repos/Stig-Johnny/nutri-e/contents/docs/<file>.md --header 'Accept: application/vnd.github.raw'`

**Notes:** allow_auto_merge is false at repo level — unlike fast-e, reward-e, count-e. Manual merge required after review.

### ios-link-sdk

**Source:** `cuti-e/ios-link-sdk`

Shared iOS SDK for cross-app linking. Archived — no active development,
no rig-reviewer access needed.

**Stack:** Swift Package

## Conventions

- App icons must be fully opaque RGB PNGs — alpha channel breaks Xcode Cloud upload (`Preparing build for App Store Connect failed`). Source PNG is a full 1024×1024 square; Apple rounds corners at render time.
- Subscriptions are RevenueCat SDK (not raw StoreKit 2). Webhook handler at `/v1/webhook/revenuecat`. Entitlement mapping documented per app in its own `docs/revenuecat.md`.
- CI uses Xcode Cloud workflows, one per app. Always specify exact simulator OS versions — never `latest` — or destinations fail intermittently.
- Distribution gates TestFlight first, then App Store. Fast-E and Drink-E are explicitly blocked from App Store submission until Cuti-E is released (product sequencing decision).
- Repo migration 2026-04-22 — apps are mirrored from `Stig-Johnny/*` into `dashecorp/dashe-*-e` with full history (branches + tags). Docs aggregation reads from the dashecorp mirrors (`url`); `legacy_url` records the Stig-Johnny origin for provenance. Per-app cutover (Xcode Cloud, App Store Connect Git integration, CI) happens separately and is tracked per repo. Naming: `dashe-<brand>-e` where the brand can differ from the legacy repo name (e.g. legacy `star-rewards` → brand `dashe-reward-e`).
