A client-only finance app where the AI builds the UI — and you're here to build its animation showcase.
Arnesh Mandal · June 2026Terranova is client-only and BYOK — your own API keys, on your own device. The AI renders the UI; nothing runs on a server.
A React Native app talking directly to third-party APIs. Anything that looks like a backend call is a direct call or an on-device stub.
Bring-your-own-key — API keys are pasted in Settings and live in secure storage on the device.
A UI-language renderer turns the model's reply into native components. Background context only — not needed for animation work.
The AI side — the UI-language renderer — is background context. Not needed for animation work.
This is an Expo dev-client build with native modules — Skia, secure-store, audio. You build a real iOS app once, then iterate.
A Mac with Xcode, or a plugged-in iPhone. No backend to run — the app is client-only.
dependencies
generates the native ios/ project
build + boot in the iOS Simulator (or --device for a phone)
reload an already-installed build — day to day, this is all you run
The repo's landing page and entry point — it carries the orientation. The rest are supporting documents in docs/ — go through them, reach for them as you work.
Each one is a small, polished interaction demo — buttons, loaders, gestures, waveforms — staged inside the app's own showcase pager.
In the app: the spaces (star) menu → the Interactions tile. Page through with the arrows; ✕ closes.
A demo imports the real component and stages it. The component stays canonical; the showcase never drifts.
Copy into screens/interactions/ only when modifying an animation — never edit the real component to experiment.
the header comment on every fork
The catalog changelog states it: exploring → approved → promoted.
Colors, spacing, type come from tokens/. No raw hex, no hardcoded fonts.
Reach for design-system components before ad-hoc UI.
npx tsc --noEmit shows 15 pre-existing errors in agency code. Keep it at 15 — new ones are yours.
terranova-main-agency/ is a read-only reference — excluded from the bundler and TypeScript. Read it; never modify it.
Every animation has a spec. You never guess.
What starts it — tap, on-mount, drag, or a continuous loop.
A Figma frame, a screen recording, or a precise description.
The acceptance bar — "finished" is unambiguous.
One row per animation in docs/developer-onboarding.md §7. Pick a row, branch, build, open the PR.