I Built a 100+ File Android App Using Only Vibe Coding with Kiro
What happens when you try to build a complex Android app entirely through conversation with an AI? I decided to find out using Kiro, an AI-powered IDE.
The goal: Build a production-quality personal assistant app with voice commands, finance tracking, location-based reminders, and home screen widgets — without writing boilerplate manually.
What I Built
Smart Calendar — an AI-powered Android assistant that combines:
- 🎤 Voice-first chat interface with natural language understanding
- 🔊 Custom "Kiro" wake word detection
- 💰 Finance tracking with AI-powered SMS parsing
- 📍 Location-based reminders using geofencing
- ✅ Tasks, alarms, and recurring reminders
- 📱 Three home screen widgets
- 💬 Floating chat bubble overlay
The result: 100+ Kotlin files, 8 database tables, Jetpack Compose UI, and features I'd normally spend weeks implementing.
How Kiro Changed My Approach
1. Spec-Driven Development
Instead of jumping into code, I described features in plain English. Kiro's spec system breaks this into:
- Requirements — what the feature should do
- Design — how it should work technically
- Tasks — step-by-step implementation checklist
This forced me to think through features before coding, catching design issues early.
2. Vibe Coding
Traditional development: Google → Stack Overflow → copy → adapt → debug → repeat.
Vibe coding with Kiro: "I want wake word detection that listens for 'Kiro' and triggers voice input."
Kiro generated the AudioRecord implementation, threshold detection, and SpeechRecognizer handoff. I reviewed, tweaked, and moved on.
3. Incremental Complexity
I started with a basic reminder app. Each session added a layer:
- Session 1: Basic reminders
- Session 5: Voice input
- Session 10: Location geofencing
- Session 15: Finance tracking with SMS parsing
- Session 20: Home screen widgets
The app grew organically through conversation.
Code Example: Wake Word Detection
Here's what Kiro generated for the wake word service:
class WakeWordService : Service() {
private var audioRecord: AudioRecord? = null
private val sampleRate = 16000
private val bufferSize = AudioRecord.getMinBufferSize(
sampleRate,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT
)
private fun startListening() {
audioRecord = AudioRecord(
MediaRecorder.AudioSource.MIC,
sampleRate,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSize
)
// Audio level detection triggers SpeechRecognizer
// which checks for wake word variants:
// "Kiro", "Kyro", "Kero", "Cairo", "Kira"
}
}
I described what I wanted. Kiro handled the Android audio APIs I'd otherwise spend hours researching.
What Worked Well
✅ Rapid prototyping — Features that would take days took hours
✅ Consistent architecture — Kiro maintained patterns across 100+ files
✅ Learning accelerator — I learned Android APIs through generated code
✅ Documentation built-in — Specs serve as living documentation
What Required Iteration
⚠️ Complex state management — Sometimes needed manual refinement
⚠️ Edge cases — AI handles happy paths well; edge cases need guidance
⚠️ Platform quirks — Android-specific gotchas (like exact alarm permissions) required explicit prompting
The Numbers
| Metric | Value |
|---|---|
| Kotlin files | 100+ |
| Database tables | 8 |
| Lines of code | ~15,000 |
| Development approach | 90% vibe coding, 10% specs |
| Time saved | Estimated 60-70% |
Try It Yourself
The full source is available on GitHub. Clone it, explore the .kiro/specs/ folder to see how features were planned, and try extending it with your own vibe-coded features.
Final Thoughts
Kiro didn't replace my development skills — it amplified them. I still made architectural decisions, reviewed code, and debugged issues. But the tedious parts? The boilerplate, the API lookups, the repetitive patterns? Those became conversations.
If you're curious about AI-assisted development, give vibe coding a try. Start small, iterate, and see how complex you can go.
Built for the Kiroween Hackathon — Frankenstein Category
"Speak it. Track it. Never forget it."
Top comments (0)