DEV Community

Hussain Nazary
Hussain Nazary

Posted on

The Experiment

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"
    }
}
Enter fullscreen mode Exit fullscreen mode

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)