About the Project
Inspiration
We wanted to make it easier for developers to start building with Storyblok without spending hours on setup and boilerplate. Setting up a frontend framework, connecting to Storyblok, and customizing it for a real-world use case can be repetitive and error-prone. Our idea was to combine a Go-based CLI with an AI-powered backend so developers could describe what they want to build, answer a few clarifying questions, and instantly get a working scaffold.
How We Built It
CLI (Go + Cobra)
- Built an interactive wizard that asks questions about the project (framework, region, API token, etc.).
- Uses
npx @storyblok/create-demoto scaffold a starter app. - Streams generated code and follow-up prompts from the backend.
- Handles file merging, caching of answers, and dependency installation.
Server (FastAPI + LangChain + Google Gemini)
- Provides structured JSON code generation endpoints.
- Generates project files, dependencies, and follow-up questions.
- Uses LangChain agents to refine prompts and avoid repetitive questioning.
- Enforces strict JSON output and fallback parsing for resilience.
Together, the CLI and backend create an iterative, AI-assisted development workflow.
What We Learned
- How to integrate streaming AI responses (NDJSON) into a CLI workflow.
- The importance of caching answers and merging generated files safely.
- Best practices for prompting LLMs to return valid, structured JSON.
- How to design a workflow that balances automation with developer control.
Challenges We Faced
- Prompt design: Getting the AI to consistently output well-structured JSON was non-trivial.
- Streaming integration: Handling partial file outputs in real-time required careful error handling.
- Merging logic: Ensuring generated files didn’t overwrite important parts of the scaffold was tricky.
- Developer UX: We wanted the CLI to feel smooth and intuitive, even though it connects multiple moving parts.

Log in or sign up for Devpost to join the conversation.