Home / Ops / Housekeeping and Process

MORNING FOR JEFF (overnight app build blockers)

Updated Jun 25, 2026 · MORNING-FOR-JEFF.md

Summary. These are the things I could not do without you (Apple login/2FA, billable resources, or secrets I do not have). Everything else got built. Each item has the exact step.

MORNING FOR JEFF (overnight app build blockers)

These are the things I could not do without you (Apple login/2FA, billable resources, or secrets I do not have). Everything else got built. Each item has the exact step.

Last updated: 2026-06-25 (overnight build session).


1. Render Postgres (the consumer database) [5 min, picks a plan]

Status: NOT provisioned. The backend runs RIGHT NOW on a SQLite fallback, so nothing is blocked, but for the real scale-ready DB you wanted, create a Render Postgres and set its URL. I did not auto-create it because it is a billable plan choice and setting the env var redeploys the live affirmology-studio-api service, which I should not do to production overnight without you.

Your Render facts (already looked up): - Owner / team id: tea-d8pf325ckfvc73a7mtqg - Web service affirmology-studio-api: srv-d8pkp20js32c738r8ofg - Existing Postgres: none.

Do this: 1. Render dashboard -> New -> Postgres. Name it affirmology-consumer. Pick a plan (the free tier is fine to start; it sleeps and has a row cap, so pick a small paid plan if you want it always-on). Same region as the web service. 2. Copy its Internal Database URL. 3. Render -> affirmology-studio-api -> Environment -> add DATABASE_URL = that URL. Save (this redeploys). The backend auto-creates all tables on boot (create_all) and re-seeds the invites/people/categories. It normalizes a postgres:// URL to postgresql:// itself. 4. That is it. The app code already reads DATABASE_URL; no code change needed.

(If you would rather I provision it via the Render API next session, say so and I will run the exact create call against owner tea-d8pf325ckfvc73a7mtqg, then set the env var.)


2. Xcode + CocoaPods are not installed on this Mac [needed for any iOS build]

Status: BLOCKER for running the apps in the iOS Simulator and for the Capacitor iOS build. xcodebuild and pod are missing on this machine, so I could not compile or launch either app in the Simulator. I built and TYPE-CHECKED everything that does not need Xcode.

Do this (one time): 1. Install Xcode from the App Store (large download), then run it once to accept the license. 2. In Terminal: sudo xcodebuild -runFirstLaunch and xcode-select --install. 3. Install CocoaPods: sudo gem install cocoapods (or brew install cocoapods). 4. Tell me when done and I will: build the Expo app to the iOS Simulator, add the Capacitor iOS platform for Atlas, and verify both launch.

(Alternatively, for the consumer app we can skip local Xcode entirely and build in the cloud with EAS Build, which only needs your Apple credentials in step 3 below.)


3. Apple Developer / App Store Connect (the human-only Apple steps)

I cannot do these without your Apple ID + 2FA. I prepared the projects up to here.

  1. App Store Connect (https://appstoreconnect.apple.com): sign in, accept any pending agreements, and create two app records: - Atlas, bundle id ai.affirmology.atlas - Affirmology, bundle id ai.affirmology.app
  2. App Store Connect API key (best path, lets EAS submit without interactive login): Users and Access -> Integrations -> App Store Connect API -> generate a key with App Manager role. Download the .p8, and note the Key ID + Issuer ID. Give me those (or put the .p8 somewhere I can reference) and I will wire eas submit.
  3. Testers: add Sol and Colin. For Atlas use internal testers (no review). For Affirmology use an EXTERNAL tester group by email (the first external build needs a ~24 to 48h review).
  4. APNs key for push: Certificates, Identifiers & Profiles -> Keys -> new key with Apple Push Notifications enabled. Download the .p8, note the Key ID + Team ID; give them to me for EAS + the backend.

4. Oracle photos

Status: DONE. All 17 council head busts downloaded into affirmology-app/assets/oracles/ (sophia, hermes, agastya = Sri Agastya, prometheus, athena, pythagoras, chiron, eros, concordia, hestia, gaia, orpheus, apollo, hypnos, echo, persephone, plus atlas). The chat wires each oracle to its face; nothing is on a placeholder. If you want background-removed transparent crops for the small round avatars, send them and it is a one-folder swap.

4b. Atlas native iOS project

npx cap add ios already generated the native Xcode project under affirmology-studio/atlas-capacitor/ios/ and copied the web assets. It is NOT committed (it is regenerable and carries Pods). After you install CocoaPods + full Xcode (section 2), run from affirmology-studio/atlas-capacitor: npm install && npx cap add ios && npx cap sync ios && npx cap open ios, then set signing in Xcode and run. To turn the magic-link login on, set ATLAS_MAGIC_LINK=1 on the Render service (it is OFF now, so the live Studio is unchanged).


Atlas is wrapped to load https://studio.affirmology.ai. If you want to drop the Cloudflare Access PIN gate in favor of the new magic-link login, relax/remove the Access policy on studio.affirmology.ai in Cloudflare Zero Trust. I did NOT change any Cloudflare setting. Keep Access as an optional outer layer if you prefer belt-and-suspenders for the closed beta.