A Developer Collaboration Story
Overview
This document captures not only the technical evolution of Willowbrook Clothing, a premium custom apparel e-commerce platform, but also the unique collaboration between a developer and an AI partner β Kiro.
It documents how we built, reasoned, and refined the project using modern coding strategies like vibe coding, spec-driven development, and agent hooks, alongside strong steering documentation to align direction, maintain flow, and achieve production quality with zero infrastructure cost.
π§ Table of Contents
- Project Vision & Goals
- Collaborative Development Model
- Vibe Coding with Kiro
- Agent Hooks & Automated Workflows
- Spec-Driven Development
- Steering Documents Strategy
- Problem-Solving Flow
- Key Development Patterns
- Lessons Learned
- Metrics & Outcomes
- Conclusion
π― Project Vision & Goals
The goal was to create a modern, custom clothing platform that balances premium aesthetics, real-time interactivity, and serverless scalability.
Our aim: deliver a full-stack production-ready MVP β powered entirely by free-tier cloud services β within weeks, not months.
Core Requirements
- Real-time product customization (color, size, embroidery)
- Seamless cart and checkout experience
- Authentication with JWT and email verification
- Admin dashboard for managing products and orders
- Direct image uploads to cloud storage
- Instagram-integrated order confirmations
Chosen Stack
| Layer | Technology | Reasoning |
|---|---|---|
| Frontend | React 18 + TypeScript + Vite + Tailwind CSS | Speed, DX, type safety |
| Backend | Netlify Functions (Express.js) | Serverless, cost-free, scalable |
| Database | Supabase PostgreSQL | Real-time, integrated, free tier |
| State Mgmt | Zustand | Lightweight, perfect for client-side cart |
| Storage | Supabase Storage | CDN-backed uploads, secure policies |
π€ Collaborative Development Model
While the tech stack was crucial, the real breakthrough came from the development method itself β a co-creative loop between human intuition and AI precision.
I didnβt just βask for code.β I built an evolving workspace where Kiro acted as a design partner, researcher, and code generator.
Each session followed this rhythm:
- Define context
- Set technical intent
- Request scoped generation
- Iterate collaboratively
- Capture outcomes in steering docs
This created a hybrid workflow that was faster than traditional solo dev β but structured enough to maintain engineering discipline.
π¨ Vibe Coding with Kiro
Vibe coding was the creative pulse of the Willowbrook project.
It wasnβt about prompts β it was about rhythm. I treated conversations with Kiro like live pairing sessions: part brainstorming, part code synthesis.
How It Worked
- Iβd describe a vibe β the emotion, intent, or UX flow behind a feature (e.g., βa silky, fast customization screen that feels instantβ).
- Kiro translated that into structured code blocks β combining React transitions, Zustand stores, and Tailwind components with the right βfeel.β
- The back-and-forth wasnβt about syntax; it was about flow alignment.
β‘ Example: The Customization Preview
The most impressive vibe coding session came when designing the 3D product customization view.
I gave Kiro a creative brief β βreal-time feel, zero lag, maintain minimal re-renders.β
Kiro generated a dynamic, GPU-optimized React component that:
- Batched re-renders intelligently using
useMemoanduseTransition - Preloaded texture assets asynchronously
- Integrated with Zustand for live state without prop drilling
π§ Vibe coding takeaway: When you treat AI like a creative partner, code quality aligns naturally with design intent.
βοΈ Agent Hooks & Automated Workflows
Once the foundation was stable, we introduced agent hooks β small automation anchors that let Kiro manage workflows in context.
Hooks Used
- Build Hooks β Automated consistency checks before deploys.
- Testing Hooks β Triggered lightweight sanity checks via script.
- Documentation Hooks β Auto-appended updates to steering docs.
Impact
Agent hooks acted like background assistants, quietly enforcing quality and alignment.
They made it feel like Kiro was part of the development pipeline, not just a one-off code generator.
β Biggest benefit: reduced cognitive overhead β I could stay creative while Kiro handled repeatable precision tasks.
π Spec-Driven Development
While vibe coding captured creativity, spec-driven development grounded the process in clarity.
How We Structured Specs
Each feature began as a compact YAML-like spec shared with Kiro:
feature: order_management
goal: Enable admins to manage order statuses and customer history
api:
- GET /orders
- PUT /orders/:id/status
ui:
- Table view with filters
- Status dropdown
validation:
- Zod schema for order updates
auth:
- Role: ADMIN only
Kiro then expanded this into full backend and frontend implementations, ensuring parity and validation.
Spec vs. Vibe Coding
| Mode | Goal | Kiroβs Role | Best Used For |
|---|---|---|---|
| Vibe Coding | Creative flow | Interpret and enhance intent | UI/UX and experience-driven tasks |
| Spec-Driven | Precision | Implement structure and logic | API, backend, schema design |
Synergy: Start with vibe β lock in spec β automate refinement.
π§© Steering Documents Strategy
Steering docs became the central nervous system of the Willowbrook workflow.
Key Documents
- tech.md β Stack decisions, build commands, and CI/CD steps
- structure.md β Folder layout, naming conventions, and import patterns
- product.md β Business context, user flows, and feature priorities
How They Evolved with Kiro
Every major decision was recorded with reasoning. For example:
βKiro, record why we chose direct Supabase uploads over Netlify proxy.β
Over time, these became living blueprints β not static docs.
π§ Best strategy learned: Use steering docs as shared context, not static documentation.
π§° Problem-Solving Flow
Kiroβs structured reasoning shined during debugging.
We established a problem triage routine:
- Reproduce β log clear steps
- Isolate β identify failing layer
- Analyze β diff recent changes
- Fix β minimal viable patch
- Verify β regression testing
Debugging turned from frustration into guided exploration.
π§± Key Development Patterns
- Feature Loop: Define β Spec β Generate β Test β Document
- Prompt Recycling: Reuse strong prompts as templates
- Zod Everywhere: Validation enforced end-to-end
- Auto Context Preservation: Steering + hooks meant Kiro remembered evolving conventions
π§ Lessons Learned
Technical
- Serverless optimization requires lean logic and no ORM overhead
- Shared TypeScript types prevented 90% of mismatches
- Direct uploads outperform function proxies
Process
- Vibe coding unlocked creativity; spec-driven development anchored it
- Steering docs were the real game-changer
- Agent hooks turned AI into a continuous collaborator
Creative
- Talk like a designer, not a debugger
- Prompts with intent produce better results
- AI collaboration thrives on rhythm, not repetition
π Metrics & Outcomes
| Metric | Result |
|---|---|
| TypeScript Coverage | 100% |
| API Endpoints | 20+ serverless functions |
| React Components | 50+ modular units |
| Performance | <1s page loads, <2s cold starts |
| Build Time | ~30 seconds |
| Database Tables | 8 relational entities |
| Lines of Code | ~15,000 |
| Docs Synced | 3 live steering documents |
π Conclusion
Willowbrook Clothing wasnβt just a project β it was an experiment in augmented creation.
Through vibe coding, spec-driven precision, agent automation, and living steering, Kiro became more than a coding assistant β it became a collaborator that could think, adapt, and align with intent.
The final product wasnβt just code β it was proof that with the right structure and communication, AI and human creativity can build production-grade systems at startup speed.
π¬ βGood code is written; great code is co-composed.β
Last Updated: November 9, 2025
Top comments (0)