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)