DEV Community

Linford
Linford

Posted on

How Kiro Specs Made Me Ship a Full-Stack AI App in 48 Hours

Cover Image

How Kiro Specs Made Me Ship a Full-Stack AI App in 48 Hours

The Challenge

I had 48 hours to build NecroNet-a full-stack AI application that resurrects dead web artifacts (Flash, old HTML) into an interactive museum. That's:

  • React + Next.js frontend
  • FastAPI backend
  • Supabase database
  • AWS S3 storage
  • ElevenLabs voice integration
  • Ruffle emulator for Flash playback

48 hours. Solo developer. This needed serious automation.

NecroNet Upload

The Solution: Kiro Specs

Instead of jumping into code, I spent 30 minutes writing /resurrection.spec.md:

Project: NecroNet
Goal: Resurrect obsolete web artifacts into an interactive museum
Stack: FastAPI, Next.js, Supabase, S3, ElevenLabs
Pipeline:

User uploads artifact → Backend detects MIME type

Migration service → Ruffle for Flash, sanitize HTML

AI narration → ElevenLabs generates ghost curator voice

Museum exhibit → Published to gallery
Database:

artifacts table (id, name, type, storage_url, status, ghost_narration_url)

migration_logs table (artifact_id, event, timestamp)

Then I gave Kiro this spec and asked: "Generate the database schema, API endpoints, and migration pipeline based on this."

Result? Kiro generated code that actually fit together. No refactoring. No "wait, this doesn't match the schema." It just worked because Kiro understood the entire system upfront.

Why Specs Beat Vibe Coding

Kiro IDE

Vibe Coding: "Make me a file upload endpoint"

  • Kiro generates a handler function
  • You paste it in
  • You realize it doesn't know about your S3 bucket configuration
  • You ask Kiro again: "Update it to use AWS"
  • You debug for 30 minutes
  • It still doesn't integrate with your migration pipeline

Spec-Driven: Define the contract upfront

  • Kiro sees the full architecture
  • Generated code respects the database schema
  • Endpoints return the right data types
  • Integration points are already designed
  • Code ships with 80% fewer surprises

The Steering Docs Cherry on Top

I also created /curator.steering.md:

Curator Steering
Voice: Spooky but Professional
Tone: Witty, preservationist, theatrical
Examples:

"This Flash game was released in 2003 during the golden age of Newgrounds..."

"The original devs are probably on LinkedIn now. 🎃"

"Museum note: This artifact demonstrates early web creativity..."

text

Every time Kiro wrote UI copy or generated the ElevenLabs narration prompt, it followed this steering. Result: the entire app had one cohesive personality. Not generic. Not "meh." Haunted.

The Numbers

  • Time to MVP: 6 hours (thanks to spec-driven generation)
  • Time debugging integration bugs: ~30 minutes (Kiro already aligned everything)
  • Lines of code I had to rewrite: < 100 out of 5000+
  • Coffee cups: 4 (could have been 8 with vibe coding)

What I Learned

  1. Specs are documentation AND contracts. Kiro uses them to generate aligned code. So do future developers reading your codebase.
  2. Steering matters. Without it, every generated artifact is a snowflake. With it, your product has a voice.
  3. Context is king. Vibe coding = asking for help with no context. Specs = walking someone through your entire system first.

The Bottom Line

If you are shipping under deadline (or just shipping, period), stop vibe coding. Write a spec. Give it to Kiro. Watch your project assemble itself.

The future of development isn't "write better prompts." It is "write better specs."

kiro #AI #Development #Automation #Hackathon

Top comments (0)