Say what you want to build. Get a live, deployed web app.
- Voice in. Describe an app out loud; ElevenLabs speech-to-text turns it into a prompt.
- Code out. Claude generates a complete Next.js project, file by file.
- Live preview. The project boots in a Daytona sandbox and streams build progress to the browser over SSE.
- Iterate. Browse the generated code, chat with Claude about it, or download it as a ZIP.
- One-click deploy. EchoMe creates a GitHub repo and ships it to Vercel.
![]() Typing test |
![]() Pomodoro timer |
![]() Finance tracker |
Apps generated and deployed by EchoMe from a single spoken prompt.
The browser only captures audio and renders the builder. Everything that holds an API key runs in Next.js route handlers. A build is fire-and-forget: the server calls Claude, parses the files, boots them in a Daytona sandbox, and streams each step back over Server-Sent Events. Deploys go through the GitHub Git Data API and the Vercel API.
flowchart LR
User((User)) -- voice --> STT[ElevenLabs STT]
STT -- prompt --> API[Next.js API routes]
API -- generate --> Claude[Claude API]
Claude -- files --> API
API -- run --> Daytona[Daytona sandbox]
API -- SSE progress --> UI[Builder UI]
Daytona -. live preview .-> UI
UI -- deploy --> GitHub[GitHub repo] --> Vercel[Vercel]
The full request flow, module map and design trade-offs are in docs/ARCHITECTURE.md.
| Layer | Tools |
|---|---|
| App | Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS 4, shadcn/ui |
| AI | Claude Messages API (code generation and chat), ElevenLabs Scribe (speech-to-text) |
| Runtime | Daytona sandboxes for live previews |
| Auth | Supabase |
| Deploy | GitHub REST API, Vercel API |
| Quality | Vitest, ESLint, GitHub Actions |
Prerequisites: Node.js 22, plus accounts and API keys for Anthropic, ElevenLabs, Daytona and Supabase. GitHub and Vercel tokens are only needed for one-click deploy.
git clone https://github.com/obro79/stormhacks.git
cd stormhacks
npm install
cp .env.example .env.local # fill in your keys
npm run dev # http://localhost:3000| Variable | Used for |
|---|---|
CLAUDE_API_KEY |
Code generation and builder chat |
CLAUDE_MODEL |
Optional model override |
ELEVENLABS_API_KEY |
Speech-to-text |
DAYTONA_API_KEY, DAYTONA_API_URL, DAYTONA_TARGET |
Live preview sandboxes |
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY |
Sign-in |
GITHUB_TOKEN, GITHUB_USERNAME, VERCEL_TOKEN |
One-click deploy |
CLEANUP_TOKEN |
Optional. Enables the admin sandbox cleanup endpoint |
npm test # Vitest: parser, validation, naming, log classifier, API routes
npm run lint
npm run typecheck
npm run buildCI runs all four on every push and pull request.
Built at StormHacks 2025 by:



