Mobile AISecondScreen
Every Icon on This Homescreen Started as a Sentence
A phone homescreen where every icon is a mini-app that Claude wrote and a build server compiled from a plain-English description.
- DescribeA plain-English prompt plus a style
- GenerateClaude returns a React + Tailwind file tree as JSON
- ValidateNode-only modules are blocked before building
- BuildExpress + Vite compile it into one HTML bundle
- RunStored in SQLite, opened in a sandboxed WebView with the native bridge
Rochester, N.Y. SecondScreen is an app for building apps. You describe what you want, pick a style, and a new icon shows up on your homescreen. Tap it and it runs like a real app, because it is one.
A lot of the tools I'd want on my phone are too small and too specific for anyone to ship as a real app. They are also small enough for a model to write. The hard part is running them on a phone safely.
Tap it and it runs like a real app, because it is one.
The pipeline goes prompt, Claude, file tree, build. Claude returns a React project styled with Tailwind and DaisyUI as JSON. Before anything gets built, I validate it and reject Node-only imports like fs, http, child_process and axios, since they would never run in a WebView anyway. A stateless Express server writes the files to a temp folder, links a pre-cached node_modules and runs Vite with inlined assets and IIFE output. What comes back is one self-contained HTML string, with a 60 second build timeout. The phone stores that bundle in SQLite and loads it in a sandboxed WebView.
My favorite part is the bridge. Every mini-app gets a window.BRIDGE object injected before its content loads. Through it, an app can save and load data, query its own data in plain English (text to SQL), record from the mic and get a Whisper transcript, read and create calendar events, take a photo, and call AI verbs like summarize, classify, extract, plan and quiz. Everything is promise-based, so the generated code stays simple. On top of that sits a built-in assistant that answers questions across the data in every mini-app at once, with hard caps on how much context it pulls in.
It works end to end but isn't in any store yet. For that, I built a small proxy with Clerk auth, a token quota per 30 days and RevenueCat webhooks, and wrote an 11-phase plan for getting through TestFlight and onto the App Store. The homescreen already feels right: a draggable grid, swipeable pages and generated icons, each with its own palette, monogram and pixel pattern.