diff --git a/CLAUDE.md b/CLAUDE.md index 7e91a4e..8ac0776 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -30,13 +30,13 @@ Project-wide Claude Code instructions. Keep this file short — it's loaded into ## Substrate (what the agent operates on) -MIT-licensed free edition only — never reach into the paid repos. The three substrate repos can live anywhere on the developer's machine; point the agent at them via environment variables: +The agent works on either the free (MIT-licensed) edition or the paid edition — the same code path handles both, validated end-to-end. Pick which substrate to use by pointing the env vars at the corresponding repos: -- `$NATIVEAPPTEMPLATE_API` — Rails 8.1 API repo (`nativeapptemplateapi`, Ruby 7,687 LOC) -- `$NATIVEAPPTEMPLATE_IOS` — SwiftUI iOS repo (`NativeAppTemplate-Free-iOS`, Swift 15,311 LOC, iOS 26.2+) -- `$NATIVEAPPTEMPLATE_ANDROID` — Jetpack Compose Android repo (`NativeAppTemplate-Free-Android`, Kotlin 19,521 LOC, API 26+) +- `$NATIVEAPPTEMPLATE_API` — Rails 8.1 API repo (`nativeapptemplateapi`, single repo serves both editions; multi-tenancy + invitations are conditional features) +- `$NATIVEAPPTEMPLATE_IOS` — SwiftUI iOS repo. Free: `NativeAppTemplate-Free-iOS` (Swift 15,311 LOC). Paid: `NativeAppTemplate` (Swift 23,003 LOC, adds org switching, invitations, role permissions). +- `$NATIVEAPPTEMPLATE_ANDROID` — Jetpack Compose Android repo. Free: `NativeAppTemplate-Free-Android` (Kotlin 19,521 LOC). Paid: `NativeAppTemplate` (Kotlin 28,401 LOC). -Combined ~42.5k LOC of application code. Shared JSON:API contract between all three. +The renamer's substitution rules (Shop / Shopkeeper / ItemTag / NativeAppTemplate) apply identically to both editions. Paid-only concepts (Account, Member, Invitation) aren't in the rename plan, so paid features survive the generation intact. Both editions hit the same Rails OpenAPI server, so the reviewer's three-way diff works against either. **Substrate repos are read-only from the agent's perspective.** The agent never commits, pushes, edits, or runs destructive commands inside the substrate directories. To customize, the agent copies the substrate into `./out//{rails,ios,android}/` as fresh git-initialized project directories, and works exclusively inside `./out/` thereafter. Treat the substrate paths the same way you'd treat a read-only mount. diff --git a/README.md b/README.md index 76163ba..25bb2de 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,26 @@ It will: ## Demo -*90-second end-to-end run — coming after the hackathon wrap on 2026-04-27.* +Three demo specs, both adapt and replace paths, all four validation layers green end-to-end: + +| Spec | Domain entity (post-rename) | Path | Result | +|---|---|---|---| +| `"a walk-in clinic queue for small veterinary practices"` | `ItemTag → Patient`, `Shop → Clinic`, `Shopkeeper → Vet` | adapt | Layer 1 3/3 · Layer 2 3/3 · Layer 3 2/2 · Reviewer PASS | +| `"a restaurant waitlist for casual dining"` | `Shop → Restaurant`, `Shopkeeper → Host` | adapt | Layer 1 3/3 · Layer 2 3/3 · Layer 3 2/2 · Reviewer PASS | +| `"a personal task tracker with due dates"` | `ItemTag → Todo` (replaces queue entry entirely) | replace | Layer 1 3/3 · Layer 2 3/3 · Layer 3 2/2 · Reviewer PASS | + +Layer 2 ran in build mode — real `xcodebuild build` and `./gradlew assembleDebug`, full app builds installed on iPhone 17 simulator and Android emulator. Layer 3 captured the home-screen via `xcrun simctl io booted screenshot` / `adb exec-out screencap` and judged against the rubric using Opus 4.7 vision (median of 3 samples per criterion). + +The agent works on either the **free (MIT) edition** or the **paid edition** without code changes — the same pipeline handles both substrates; multi-tenant features (org switching, invitations, role permissions) survive the rename pipeline when targeting paid. + + + + + + +

iOS — Vet Clinic Queue welcome screen

Android — Vet Clinic Queue welcome screen
+ +Both screenshots are real captures from the booted iOS Simulator and Android emulator post-`./gradlew assembleDebug` / `xcodebuild build`, after the agent installed and launched the generated app. ## Architecture diff --git a/ROADMAP.md b/ROADMAP.md index f9bbcf7..0896daa 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -39,7 +39,7 @@ This track is permanent. It is not a free trial of a commercial product — it i A chat interface on nativeapptemplate.com that runs the agent for paying users, with two things the open-source CLI doesn't give them: -1. A path to the **paid-edition substrate**, so generated apps include multi-tenancy, invitations, and role-based access without any extra wiring. +1. A path to the **paid-edition substrate**, so generated apps include multi-tenancy, invitations, and role-based access without any extra wiring. **Validated end-to-end during v0.1 development** — the agent's same code path handles both free and paid substrates by choosing which repos the env vars point at; multi-tenant features (org switching, invitations, role permissions) survive the rename pipeline intact. 2. Convenience features that come from running on our infrastructure — generation history, shareable results, priority execution. The hosted version is a natural follow-on, not the primary product. It's the option for people who want the paid substrate and don't want to manage the agent themselves. diff --git a/docs/images/demo-android-vet-clinic-queue.png b/docs/images/demo-android-vet-clinic-queue.png new file mode 100644 index 0000000..acc56be Binary files /dev/null and b/docs/images/demo-android-vet-clinic-queue.png differ diff --git a/docs/images/demo-ios-vet-clinic-queue.png b/docs/images/demo-ios-vet-clinic-queue.png new file mode 100644 index 0000000..d5e8cb0 Binary files /dev/null and b/docs/images/demo-ios-vet-clinic-queue.png differ