I created a 126K - line Android app with AI - here is the workflow that actually worked for me
I really wanted to see how far I can go. Can I create a meaningful and complex application, big enough, but without knowing the language.
Yes, I have 18+ years of experience as software developer, using Java, GoLang, Scala. But I have no experience with Kotlin. And to learn Kotlin, to learn the Android libraries, it is not an easy job. I may need at least of year of active learning and trying things, before having the confidence to start something that will work.
So, I asked myself, how far can I go with AI tools? And I went far!
I created an application for monitoring elderly people. If they are not moving, if they are lost, if their daily habits are changing too much, someone will get notified. I won't post the link here to the app, because the post might get banned, even though I desperately search for a way to make it more publicly recognizable
The boring statistics:
- 126,000 lines of Kotlin across 398 files
- 45,000 lines of tests across 130 files
- 3000+ unit tests
- 3 languages (English, Bulgarian, German)
- 50+ production lessons captured in CRITICAL_DONTS.md
- 4 months from zero Kotlin experience to production app on Google Play
- 0 lines of Kotlin written manually by me
Below are the main things that I did and helped me do the product!
Good framework
Vibecoding something that big is not an option. You can't write anything in one session. Vibecoding works best for my daughter. If you need something big, you need a way to keep the context somewhere, to define the rules. You need specification. To maintain my specifications I use BMAD framework. It helped me a lot to clear the requirements, prepare the architecture, UI, find any gaps. I used it also a lot for brainstorming session and for marketing. For the latter, it failed 😉
Follow the project rules
I use Claude Code with Opus 4.6 (yes, I prefer the old version) and keep all my important rules save in CLAUDE.md file.
Every rule in that file exists because I violated it once and something broke. The file grows with the project.
This is the key insight: CLAUDE.md turns one-time lessons into permanent constraints. The AI never forgets a rule I put there. I forget constantly.
Keep your documentation up to date
I start my session with a custom command that loads all important lessons learned, release notes, rules, architecture. All needed, enough context, so that when I start prompting, the AI has the basis to make best decisions possible.
I end my session with custom command to save all new rules, lessons learned, release notes, and architectural updates. This way each subsequent session is built based on the gain knowledge from the previous. I have a history, I have an AI that gets smarter with each subsequent session.
Be as descriptive as possible
When you prompt, be as descriptive as possible. I use BMAD to create descriptive technical specifications out of my prompts. If the idea is not clear in my head, I do brainstorming session. All possible to minimize the guessing and wrong interpretations during the development phases.
Automate boring things
My app has to survive Android OEM battery killers (Samsung, Xiaomi, Honor, OPPO. They all try to kill applications that run 24/7 to save battery. And this is a never ending fight. New version add new restrictions. Undocumented behavior gets detected by fellow developers and shared in forums. If I need to monitor manually for anything that can break my app, this will be the only thing that I will have time to do... And this is boring!
That's why I created custom slash commands that do the analysis and the search for me. I run them weekly. Everything found I turn in to technical specifications (via BMAD ) and afterwards, to real implementation
Do you all do code reviews?
I do. Usually, with a different LLM. This gives a 'different point of view'. Improves greatly the code quality!
What this is not
- It is a no-code, but If you know the language, it is worth checking and correcting if needed. With time, the needed small fixes will become less. It is always good to understand the architecture and to make the design decisions yourself.
- It is not effortless. The workflow took months to build. The documentation is extensive.
- It is not magic. The AI makes mistakes. The difference is that mistakes are caught by the process (tests, reviews, rules, audits) instead of by users;
The takeaway
AI coding tools are not magic code generators. They are force multipliers for engineering process. If your process is "open chat, type prompt, hope for the best," you will be disappointed.
If your process is "document the architecture, define the rules, automate the lifecycle, capture every lesson, review everything critically", the AI becomes unreasonably effective.
The investment is not in better prompts. It is in better engineering.
The app is available in Google Play and I already have a few people using it. Quite happy with the results. And I will continue to extend it with additional functionalities, following the same approach I described above.