2025
My Deliverables
Working web app
Tools
Figma, Lovable
I've used Lovable and Claude several times to speed up front-end development. Usually for static components or websites with minimal logic, but this time I wanted to test how Lovable would handle a more complex application: a timer to help me log focus work hours.
The goal was creating a timer that measures daily focus work hours. It's a common approach many people use to maximize their output by tracking concentrated work periods.
Since this was for personal use, research and ideation were streamlined. I simply listed what I liked and didn't like about existing timers and what would fit my needs.
When designing for no-code tools, responsive auto layout, components and proper layer naming are best practices.
Following this approach, I prepared the design with responsive auto layouts and components within a small design system to ensure clean implementation.
My design with a simple component system
Implementing the timer in Lovable via the Builder.ai plugin revealed constraints I hadn't encountered when creating static components with minimal logic.
The first prompt is crucial in any AI builder. Ideally, it should cover the entire application logic, with subsequent prompts fine-tuning what the AI misunderstood.
This becomes problematic when you want specific visuals and complex logic. Currently, the builder takes your design and uses an uneditable first prompt: "Create a pixel perfect UI for this design."
While this produces accurate visuals, all logic is missing. The AI guesses functionality, and adding logic later becomes difficult since the code structure is already established.
Through experimentation, I discovered a workaround: embedding a logic description paragraph directly in the design file. This way, Lovable treats it as instruction and implements more logic upfront.
Prompt included in the design file
Another constraint: you can only export one Figma page, making multi-screen applications challenging. Components should solve this, but I couldn't generate design states that weren't already present in the original file.
Auto-layout presented similar issues. While excellent for Figma responsiveness, static groups sometimes worked better for code generation.
The final product closely matches my initial design and functions as expected. Development was faster than hand-coding, particularly the graphs, which would have required significant manual work. This makes AI tools valuable for complex components, even in larger projects. However, structural changes become nearly impossible once the AI generates the application, even when exporting to tools like Cursor. For rapid prototyping or specific components, it's excellent. For evolving applications, limitations become apparent.
Final product in Lovable