[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-70501":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},70501,"AppFromAI","BiosBrick\u002FAppFromAI","BiosBrick","AI-powered mobile app factory — describe it, build it, run it. On your phone.","",null,"TypeScript",91,13,42,0,69,3.44,"Other",false,"master",[],"2026-06-12 02:02:34","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"docs\u002Fscreenshots\u002Ficon.png\" width=\"120\" alt=\"AppFromAI logo\" \u002F>\n\n# AppFromAI\n\n### *Describe it. Build it. Run it. Instantly.*\n\n**The AI-powered mobile app factory that lives inside your phone.**  \nType a sentence in plain language. Get a fully functional, native mobile app.  \nNo code. No cloud. No waiting.\n\n\u003Cbr\u002F>\n\n[![React Native](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact%20Native-0.81-61dafb?style=flat-square&logo=react)](https:\u002F\u002Freactnative.dev)\n[![Expo SDK](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FExpo%20SDK-54-000020?style=flat-square&logo=expo)](https:\u002F\u002Fexpo.dev)\n[![TypeScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5.9-3178c6?style=flat-square&logo=typescript)](https:\u002F\u002Fwww.typescriptlang.org)\n[![Zod](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FZod-v4-3068b7?style=flat-square)](https:\u002F\u002Fzod.dev)\n[![License: Apache 2.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-green?style=flat-square)](.\u002FLICENSE)\n[![Android](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAndroid-tested-3ddc84?style=flat-square&logo=android)](https:\u002F\u002Fwww.android.com)\n[![iOS](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FiOS-not%20yet%20tested-lightgrey?style=flat-square&logo=apple)](https:\u002F\u002Fwww.apple.com\u002Fios)\n\n\u003C\u002Fdiv>\n\n---\n\n## What is AppFromAI?\n\n**AppFromAI** is a **meta-app**: a single mobile application that generates, validates, and runs other apps on demand — all from a natural language description, entirely on your device.\n\nYou don't browse templates. You don't configure a drag-and-drop builder. You don't wait for a cloud server to render something.\n\nYou just *describe what you want*, and AppFromAI builds it — right there, right now, running natively on your phone.\n\n```\n\"Create a field inspection app: take a photo, save GPS coordinates,\n add notes, and show a summary I can share.\"\n                              ↓\n              AI generates JSON UI + JavaScript logic\n                              ↓\n     AppFromAI validates, compiles, and runs it in a secure sandbox\n                              ↓\n         A real, interactive, hardware-connected app.\n               On your phone. In under 30 seconds.\n```\n\nEvery generated app — called a **module** — is a first-class citizen. It has its own screen, its own persistent state, its own access to native device hardware, and it can even call other modules like functions.\n\n---\n\n## Why AppFromAI is different\n\nMost \"AI app builders\" generate a React component that looks like an app, but lives in a browser tab on a server you don't control.\n\nAppFromAI is fundamentally different:\n\n| Capability | AppFromAI | Typical AI builders |\n|---|:---:|:---:|\n| 100% on-device execution | ✅ | ❌ |\n| Real native UI (not WebView) | ✅ | ❌ |\n| Access to camera, GPS, microphone, sensors | ✅ | ❌ |\n| Works with a local LLM (Ollama) | ✅ | ❌ |\n| No new APK \u002F IPA to install per app | ✅ | ❌ |\n| Modules compose and call each other | ✅ | ❌ |\n| Generated modules run 100% offline | ✅ | ❌ |\n| Open source | ✅ | ❌ |\n| Multi-language UI (🇮🇹 🇬🇧 🇪🇸 🇫🇷 🇩🇪) | ✅ | ❌ |\n\n---\n\n## Screenshots\n\n\u003Cdiv align=\"center\">\n\n| Generate | Modules |\n|:---:|:---:|\n| \u003Cimg src=\"docs\u002Fscreenshots\u002Fgenerate.jpeg\" width=\"240\"\u002F> | \u003Cimg src=\"docs\u002Fscreenshots\u002Fmodules.jpeg\" width=\"240\"\u002F> |\n| *Describe your app in plain language — AI does the rest* | *Your generated modules, always one tap away* |\n\n| Settings — Language | Settings — AI Provider |\n|:---:|:---:|\n| \u003Cimg src=\"docs\u002Fscreenshots\u002Fsettings-language.jpeg\" width=\"240\"\u002F> | \u003Cimg src=\"docs\u002Fscreenshots\u002Fsettings-provider.jpeg\" width=\"240\"\u002F> |\n| *Switch between 5 languages instantly* | *Ollama, OpenAI, or Claude — your choice* |\n\n\u003C\u002Fdiv>\n\n---\n\n## Demo\n\n\u003Cdiv align=\"center\">\n\n\u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F8cee08c2-1186-434f-913f-71df0def0099\" controls width=\"600\">\u003C\u002Fvideo>\n\n> *From a single sentence to a fully working native app — in under 30 seconds.*\n\n\u003C\u002Fdiv>\n\n---\n\n## What you can build — in one sentence\n\nAppFromAI can generate an enormous range of apps on the fly. Here are just a few examples of what you can type:\n\n- *\"A voice memo app that records, saves, and plays back audio\"*\n- *\"A Flappy Bird-style game with on-screen gamepad controls\"*\n- *\"A QR code scanner that saves every scan to a history list\"*\n- *\"A calorie tracker with a searchable food log and daily total\"*\n- *\"A field inspection tool: photo + GPS + notes + shareable report\"*\n- *\"A flashlight with an SOS Morse code mode\"*\n- *\"A habit tracker with streaks and push notification reminders\"*\n- *\"A bouncing ball physics sandbox I can tap to control\"*\n\nIf it fits on a mobile screen and uses hardware you have, AppFromAI can build it.\n\n---\n\n## The module system\n\nEvery generated app is a **module** — a single, self-contained JSON object with three parts:\n\n```json\n{\n  \"manifest\": {\n    \"id\": \"voice-notes\",\n    \"name\": \"Voice Notes\",\n    \"version\": \"1.0.0\",\n    \"runtime\": \"javascript\",\n    \"permissions\": [\"audioRecorder\", \"storage\"]\n  },\n  \"ui\": {\n    \"type\": \"navigator\",\n    \"initialScreen\": \"home\",\n    \"screens\": {\n      \"home\": {\n        \"type\": \"screen\",\n        \"title\": \"Voice Notes\",\n        \"onFocus\": \"loadNotes\",\n        \"components\": [\n          { \"type\": \"list\", \"bind\": \"notes\", \"emptyText\": \"No recordings yet\" },\n          { \"type\": \"button\", \"id\": \"rec\", \"text\": \"Record\", \"action\": \"startRecording\" }\n        ]\n      },\n      \"record\": {\n        \"type\": \"screen\",\n        \"title\": \"Recording\",\n        \"components\": [\n          { \"type\": \"text\", \"bind\": \"status\", \"text\": \"Ready\" },\n          { \"type\": \"button\", \"id\": \"stop\", \"text\": \"Stop & Save\", \"action\": \"stopRecording\" }\n        ]\n      }\n    }\n  },\n  \"code\": \"module.exports = { actions: { async loadNotes(api, input, state) { ... }, async startRecording(api, input, state) { ... }, async stopRecording(api, input, state) { ... } } };\"\n}\n```\n\n**The manifest** declares identity and permissions.  \n**The UI** is a declarative tree of native components — screens, inputs, buttons, lists, images, even a full game canvas with a physics ticker.  \n**The code** is JavaScript that runs in a secure sandbox, calling a rich, permission-gated API.\n\nThe AI generates all three at once. AppFromAI validates and compiles them before anything runs.\n\n---\n\n## Native capabilities — the full API\n\nEvery module has access to a rich set of native capabilities, each gated behind explicit user consent:\n\n| Capability | API |\n|---|---|\n| 📷 Camera & photos | `api.camera.takePhoto()` |\n| 🎙️ Audio recording | `api.audioRecorder.start()` \u002F `.stop()` |\n| 🔊 Audio playback | `api.audioPlayer.play(uri)` |\n| 📍 GPS & location | `api.location.getCurrentPosition()` |\n| 🧭 Motion & sensors | `api.sensors.getAccelerometer()` |\n| 💾 File storage | `api.files.save(key, uri)` |\n| 🗄️ Key-value storage | `api.storage.save \u002F load \u002F list \u002F delete` |\n| 🔔 Push notifications | `api.notifications.schedule(title, body, delay)` |\n| 🗣️ Text-to-speech | `api.tts.speak(text, { language: 'en-US' })` |\n| 📳 Haptic feedback | `api.haptics.impact('medium')` |\n| 📋 Clipboard | `api.clipboard.set(text)` \u002F `.get()` |\n| 🔗 Share sheet | `api.share.text(str)` \u002F `.file(uri)` |\n| 📷 QR \u002F barcode scanner | `api.qrScanner.scan()` |\n| 🔦 Torch \u002F flashlight | `api.torch.setEnabled(true)` |\n| 🌐 HTTP network fetch | `api.network.fetch(url, options)` |\n| 📞 Phone \u002F SMS \u002F email | `api.linking.dialPhone \u002F sendSms \u002F composeEmail` |\n| 🤖 Cross-module calls | `api.modules.run(id, action, input)` |\n\n---\n\n## The game engine — yes, you can build games\n\nAppFromAI ships with a built-in **game canvas** component (`gameView`) and an **on-screen gamepad** (`gamepad`), giving the AI everything it needs to generate fully playable 2D games.\n\nThe game engine is declarative: the AI describes the scene as an array of objects (rectangles, circles, text labels), and AppFromAI renders them at up to 60fps. Physics, input, collision, scoring — all in JavaScript, all generated on the fly.\n\n```\n\"Create a Flappy Bird clone with on-screen arrow controls,\n pipes that speed up over time, and a high-score counter.\"\n```\n\nAppFromAI generates the game loop, the renderer, the gamepad layout, the score state, and the collision logic — all in one shot.\n\n**Recent game engine additions:**\n- Per-object physics (`vx`, `vy`, `gravity`) applied automatically every tick — no manual physics code needed\n- `fps` property on `gameView` to set frame rate declaratively (10–60 fps)\n- `onCollideAction` — fired automatically on AABB overlap between any two identified objects\n- `onOutOfBoundsAction` — fired when an object leaves the canvas bounds\n- Global `gravity` on the `gameView` node, applied to all objects at once\n\n**Gamepad layouts:**\n- `row` — horizontal button row (left \u002F right \u002F jump)\n- `dpad` — cross layout (↑ ← → ↓) for 4-directional movement\n- `split` — two-thumb layout (left half \u002F right half of screen)\n\nButtons support **hold mode**: the action fires repeatedly while the button is pressed, at a configurable rate — perfect for smooth character movement.\n\n---\n\n## Multi-screen navigation\n\nAppFromAI modules support full **multi-screen navigation** via a declarative `navigator` root, with automatic back-button management.\n\n```\nHome screen (list of items)\n    │\n    └──▶ Detail screen (edit \u002F view)\n              │\n              └──▶ (save and go back → list auto-refreshes)\n```\n\nThe `onFocus` hook ensures that any screen that shows data from storage **automatically reloads** every time it becomes active — whether it's the first visit or a return from a child screen. No boilerplate, no manual refresh triggers.\n\n---\n\n## Module-to-module communication\n\nThe most powerful feature: **modules can call each other like functions** at runtime.\n\n```js\n\u002F\u002F Inside any module's action\nconst result = await api.modules.run(\"tax-calculator\", \"compute\", { amount: 500 });\n\u002F\u002F → { total: 610, vatAmount: 110 }\n```\n\nThis enables runtime composition:  \n**snap a photo → run it through an OCR module → save the result → send a notification**  \nEach step is an independent module, composable without integration code.\n\n---\n\n## Security — every layer, explicitly hardened\n\nAppFromAI runs AI-generated code on your device. That requires a serious, layered security model.\n\n**Before a module is saved:**\n- `eval`, `Function`, `new Function`, `require`, `import`, `process`, `global`, `__dirname` — all statically blocked\n- The entire module is Zod-validated against a strict schema\n- Every declared UI action must exist in the compiled code\n\n**Before a module runs:**\n- A native permission consent screen shows the user exactly what hardware\u002Fdata the module wants\n- Only permissions declared in the manifest and granted by the user are active\n\n**While a module runs:**\n- The sandbox API is the only interface to native capabilities — no direct OS access\n- Actions are killed after 8 seconds\n- Return values must be JSON-serializable\n- Cross-module call depth is capped at 3 levels\n\n**In the UI:**\n- The renderer validates every node type before rendering\n- Unknown or malformed nodes are silently dropped — the app never crashes on bad AI output\n\n---\n\n## AI provider flexibility\n\nAppFromAI works with any LLM that can produce structured JSON — with built-in retry logic and error recovery:\n\n| Provider | How |\n|---|---|\n| **Ollama** (local) | Any model via `\u002Fapi\u002Fchat` — runs on your own hardware, fully private |\n| **OpenAI** | Any OpenAI-compatible API endpoint |\n| **Claude** | Anthropic Messages API |\n| **Mock mode** | Instant, offline demo modules for testing — no AI needed |\n\nThe generation pipeline includes automatic retry with targeted hints on failure: if the JSON is truncated, if an action is missing, if the code has a runtime error — AppFromAI tells the model exactly what went wrong and asks it to regenerate intelligently.\n\n---\n\n## Multi-language UI\n\nAppFromAI ships with a full internationalization system. The entire interface — tabs, buttons, alerts, permission screens, error messages — is available in:\n\n🇮🇹 Italiano · 🇬🇧 English · 🇪🇸 Español · 🇫🇷 Français · 🇩🇪 Deutsch\n\nLanguage is auto-detected from the device locale, and can be overridden at any time in Settings.\n\n---\n\n## Tech stack\n\n| Layer | Technology |\n|---|---|\n| UI framework | React Native 0.81 + Expo SDK 54 |\n| Navigation | Expo Router v6 (file-based) |\n| JS engine | Hermes — lightweight, fast, sandboxed |\n| Schema validation | Zod v4 — strict, typed, zero-tolerance |\n| Persistent storage | AsyncStorage + expo-file-system |\n| Audio | expo-av |\n| Camera \u002F QR | expo-camera |\n| Location | expo-location |\n| Sensors | expo-sensors |\n| Notifications | expo-notifications |\n| Haptics \u002F TTS | expo-haptics + expo-speech |\n| Language | TypeScript 5.9, strict mode |\n\n---\n\n## Getting started\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fyour-username\u002FAppFromAI\ncd AppFromAI\nnpm install\nnpx expo start\n```\n\nScan the QR code with **Expo Go**, or run a full dev build:\n\n```bash\nnpx expo run:android  # Android — tested ✅\nnpx expo run:ios      # iOS — not yet tested ⚠️\n```\n\n> **Platform status:**\n> - ✅ **Android** — tested and working\n> - ⚠️ **iOS** — code is compatible but not yet tested on a real device or simulator. Contributions welcome.\n\n### Use a local LLM (recommended — fully private)\n\n1. Install [Ollama](https:\u002F\u002Follama.com) on your Mac or PC and pull a model:\n   ```bash\n   ollama pull gemma3:4b\n   # or: ollama pull mistral, llama3.2, etc.\n   ```\n2. Open AppFromAI → **Settings** → select **Ollama**\n3. Set the URL to your machine's local IP:\n   - Real device: `http:\u002F\u002F192.168.1.x:11434`\n   - Android emulator: `http:\u002F\u002F10.0.2.2:11434`\n4. Set the model name to match `ollama list`\n\n### Use OpenAI or Claude\n\nSet your provider in Settings and enter your API key and endpoint. Any OpenAI-compatible API works.\n\n---\n\n## Project structure\n\n```\napp\u002F\n  (tabs)\u002F\n    index.tsx        Generate screen — the main prompt interface\n    modules.tsx      Module library — browse, open, delete\n    settings.tsx     AI provider, language, mock mode\n  module\u002F[id].tsx    Module runner — permission gate + live renderer\n  _layout.tsx        Root layout, providers\n\nsrc\u002F\n  ai\u002F\n    aiClient.ts      LLM request pipeline (Ollama \u002F OpenAI \u002F Claude)\n    modulePrompt.ts  System prompt engineering — the full generation contract\n    mockModules.ts   Offline demo modules\n    normalizeGeneratedModule.ts  Pre-Zod normalization & type coercion\n\n  capabilities\u002F\n    motherApi.ts     The full sandboxed API exposed to module code\n    capabilityRegistry.ts  Lifecycle management for active sensors\u002Fstreams\n\n  modules\u002F\n    moduleStore.ts   AsyncStorage persistence for saved modules\n    moduleValidator.ts  Zod + static scan + action cross-validation\n    moduleRunner.ts  new Function compilation + action execution\n\n  renderer\u002F\n    DynamicRenderer.tsx   State machine, navigator, action runner\n    components.tsx        JSON UI tree → React Native components\n    ModulePermissionGate.tsx  Native consent UI before hardware access\n\n  security\u002F\n    codeScanner.ts   Static pattern blacklist (eval, Function, etc.)\n    runtimePermissions.ts  Native OS permission prefetch\n\n  i18n\u002F\n    translations.ts  All UI strings in 5 languages\n    useI18n.ts       Language hook with auto-detect\n\n  settings\u002F\n    settingsStore.ts   AsyncStorage persistence for app settings\n    SettingsContext.tsx  React context for settings\n\n  types\u002F\n    uiNodes.ts       TypeScript types for the full UI node tree\n    generatedModule.ts  Zod schemas for the complete module format\n```\n\n---\n\n## Roadmap\n\n### 🧩 New UI components\n- [x] **WebView** — embed any website or web content inline inside a generated module; the AI can generate a `webview` node that opens in an in-app browser with a single tap\n- [ ] **Charts** — bar, line, and pie chart components in the declarative UI tree; generated modules can visualize data without a single line of chart code\n- [ ] **Map view** — display GPS coordinates and routes on an interactive map, directly inside any generated module\n- [ ] **Rich list items** — list rows with avatar, subtitle, badge, and swipe-to-delete, so the AI can generate beautiful data-driven apps instead of plain text lists\n\n### ⚡ Platform power\n- [ ] **Background scheduler** — trigger any module action on a cron schedule while the app is closed; habit reminders, data sync, periodic sensor readings\n- [ ] **SQLite storage** — a real relational database available to modules that need joins, queries, and structured data beyond key-value pairs\n- [ ] **Biometric lock** — protect individual modules with Face ID or fingerprint; one setting, zero code\n\n### 🤝 Sharing & community\n- [x] **Module rename** — tap the module name to rename it directly from the library screen, without regenerating\n- [ ] **Module export & import** — export any module as a single JSON file and share it via AirDrop, link, or QR code; anyone with AppFromAI can import and run it instantly\n- [ ] **Module marketplace** — a curated feed of community-built modules; browse, preview, and install in one tap\n\n### 🛠️ Developer experience\n- [ ] **Live module editor** — edit a module's UI or code directly inside the app and hot-reload it without regenerating from scratch\n- [ ] **Smart auto-fix** — when a module throws a runtime error, automatically send the stack trace to the LLM and apply the patch; one tap from error to working app\n\n---\n\n## Contributing\n\nAll contributions are welcome — bug fixes, new capabilities, new UI components, module examples, translations, and documentation.\n\nIf you build something great with AppFromAI, open a PR to add it to the `examples\u002F` folder. Every cool example makes the tool more powerful for everyone.\n\n---\n\n## License\n\nApache 2.0 — use it, fork it, ship it, build on it.\n\n---\n\n## Vision\n\nI believe we're moving toward a future where phones don't come with apps — they generate them.\n\nWhen you need something, your device builds it for you, tailored to exactly what you asked, runs it, and discards it when you're done. No App Store. No installations. No one-size-fits-all software designed for the average of everyone and perfect for no one.\n\nAppFromAI is an early, open-source experiment in that direction. It's rough around the edges — but the core idea works. Type a sentence. Get a real app. Today, on your phone.\n\nThat's where we're going.\n\n---\n\n## Disclaimer\n\nAppFromAI is an independent open-source project and is **not affiliated with, endorsed by, or officially connected to** OpenAI, Anthropic, or Ollama in any way.\n\n\"OpenAI\" and \"ChatGPT\" are trademarks of OpenAI, LLC. \"Claude\" is a trademark of Anthropic, PBC. \"Ollama\" is a trademark of Ollama, Inc. All third-party trademarks are the property of their respective owners and are referenced here solely to describe software compatibility.\n\nUsers are responsible for complying with the terms of service of any AI provider they connect to AppFromAI.\n\n---\n\n\u003Cdiv align=\"center\">\n\n**AppFromAI** — *Every app you ever needed. One sentence away.*\n\n\u003C\u002Fdiv>\n","AppFromAI 是一个基于人工智能的移动应用生成器，允许用户通过自然语言描述来创建、构建和运行原生移动应用。该项目使用 TypeScript 编写，并集成了 React Native 和 Expo SDK 技术栈，确保了应用的高效开发与运行。其核心功能包括即时生成应用程序逻辑及界面设计，无需编写代码或依赖云端服务，且生成的应用能够访问设备硬件如摄像头、GPS等。非常适合需要快速原型设计或小规模定制化应用开发的场景，特别是对于那些希望绕过传统编程流程的技术爱好者或小型团队而言。此外，AppFromAI 支持多语言界面显示，进一步增强了其实用性。",2,"2026-06-11 03:32:32","CREATED_QUERY"]