What I Built
I built LogoForge, a small web app that generates SVG logo concepts from a brand name, industry, style, and keywords using the Gemini API.
The app supports single and 3-variation generation, validates the model output as structured JSON, retries once if validation fails, and lets users preview the SVG, download it, and copy the JSON output.
I also refactored the project into a frontend and backend proxy setup so the API key is not exposed in the browser. That made the app feel much closer to something I would actually deploy instead of just keeping as a local prototype.
Demo
In the demo, I show the input flow, SVG generation results, color palette and brand story output, and the difference between single and 3-variation generation.
My Experience
This project taught me that prompting works much better when I treat it like writing a product spec instead of giving a loose instruction. The clearer I was about the UI, output format, and SVG constraints, the better the generated app became.
The biggest lesson was reliability. A raw model response can look correct but still fail in subtle ways, so adding validation and a retry step made the app much more stable.
I also learned a lot from the deployment side. I started with a simpler client-side setup, then moved the Gemini call behind a backend proxy and deployed the frontend and backend separately. That part felt much more like real engineering work than just prompt experimentation.
During testing, I also occasionally ran into temporary Gemini API availability issues under high demand. The overall app flow and deployment setup still worked as expected, but it reminded me that real-world AI apps need both prompt design and engineering safeguards.
What I Learned
- Clear constraints produce better results
- Structured output still needs validation
- SVG is a great way to create visual output without image generation
- Small engineering steps like retries and safer secret handling make a big difference
- AI tools can speed up prototyping, but reliability still depends on developer judgment
Top comments (0)