<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Akachukwu Onyekesi</title>
    <description>The latest articles on DEV Community by Akachukwu Onyekesi (@akachukwu_onyekesi_2368b5).</description>
    <link>https://dev.to/akachukwu_onyekesi_2368b5</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3641335%2F4bb9a86f-d186-405e-a785-048b66c390c7.png</url>
      <title>DEV Community: Akachukwu Onyekesi</title>
      <link>https://dev.to/akachukwu_onyekesi_2368b5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/akachukwu_onyekesi_2368b5"/>
    <language>en</language>
    <item>
      <title>nice app</title>
      <dc:creator>Akachukwu Onyekesi</dc:creator>
      <pubDate>Wed, 03 Dec 2025 06:44:46 +0000</pubDate>
      <link>https://dev.to/akachukwu_onyekesi_2368b5/nice-app-2ohc</link>
      <guid>https://dev.to/akachukwu_onyekesi_2368b5/nice-app-2ohc</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/akachukwu_onyekesi_2368b5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3641335%2F4bb9a86f-d186-405e-a785-048b66c390c7.png" alt="akachukwu_onyekesi_2368b5"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/akachukwu_onyekesi_2368b5/-building-blood-stream-how-kiro-ai-helped-me-create-a-horror-streaming-platform-in-21-days-51d5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;# Building Blood Stream: How Kiro AI Helped Me Create a Horror Streaming Platform in 21 Days&lt;/h2&gt;
      &lt;h3&gt;Akachukwu Onyekesi ・ Dec 2&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title># Building Blood Stream: How Kiro AI Helped Me Create a Horror Streaming Platform in 21 Days</title>
      <dc:creator>Akachukwu Onyekesi</dc:creator>
      <pubDate>Tue, 02 Dec 2025 14:13:07 +0000</pubDate>
      <link>https://dev.to/akachukwu_onyekesi_2368b5/-building-blood-stream-how-kiro-ai-helped-me-create-a-horror-streaming-platform-in-21-days-51d5</link>
      <guid>https://dev.to/akachukwu_onyekesi_2368b5/-building-blood-stream-how-kiro-ai-helped-me-create-a-horror-streaming-platform-in-21-days-51d5</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzoffmh98qg31mqg2gd72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzoffmh98qg31mqg2gd72.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Building Blood Stream: How Kiro AI Helped Me Create a Horror Streaming Platform in 21 Days
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Here's how I used Kiro's spec-driven development, agent hooks, and steering docs to build something that would've taken months manually.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem: Horror Streaming is Boring
&lt;/h2&gt;

&lt;p&gt;Every streaming app looks the same. Netflix, Hulu, Disney+—black backgrounds, white text, rectangular thumbnails. For most content, that's fine. &lt;/p&gt;

&lt;p&gt;But horror? Horror fans are fanatics. They attend midnight screenings in costume. They visit haunted attractions. They collect memorabilia. They deserve an experience that matches their passion.&lt;/p&gt;

&lt;p&gt;So I asked: &lt;strong&gt;What if the streaming app itself was part of the horror experience?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution: Blood Stream
&lt;/h2&gt;

&lt;p&gt;Blood Stream is a horror movie streaming platform where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Movie posters &lt;strong&gt;drip blood&lt;/strong&gt; when you hover over them&lt;/li&gt;
&lt;li&gt;Search uses a &lt;strong&gt;Ouija board&lt;/strong&gt; interface&lt;/li&gt;
&lt;li&gt;Your watchlist is a &lt;strong&gt;morgue&lt;/strong&gt; with sliding body drawers&lt;/li&gt;
&lt;li&gt;Video players have &lt;strong&gt;blood-filled progress bars&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Atmospheric fog, Gothic typography, and eerie sound design create genuine immersion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built in 21 days for the Kiroween hackathon using Kiro AI, it won &lt;strong&gt;$27,500 in prizes&lt;/strong&gt; and received acquisition offers.&lt;/p&gt;

&lt;p&gt;Here's exactly how I used Kiro to make it happen.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Kiro AI Changed Everything
&lt;/h2&gt;

&lt;p&gt;Most developers think AI coding is about clever prompting. &lt;strong&gt;Wrong.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The secret is using the right Kiro feature for each task:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📋 &lt;strong&gt;Specs&lt;/strong&gt; for complex logic&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Agent hooks&lt;/strong&gt; for automation
&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;Steering docs&lt;/strong&gt; for consistency&lt;/li&gt;
&lt;li&gt;💬 &lt;strong&gt;Vibe coding&lt;/strong&gt; for creative polish&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me break down each one.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 1: Spec-Driven Development
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Old Way (Without Specs)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Make a blood-dripping effect"&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Kiro:&lt;/strong&gt; &lt;em&gt;generates basic animation&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Me:&lt;/strong&gt; "No, make it fall with gravity"&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Kiro:&lt;/strong&gt; &lt;em&gt;updates animation&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Me:&lt;/strong&gt; "Add a splatter at the bottom"&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Kiro:&lt;/strong&gt; &lt;em&gt;adds splatter&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Me:&lt;/strong&gt; "Make it look more realistic"&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Kiro:&lt;/strong&gt; &lt;em&gt;tries again&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Me:&lt;/strong&gt; "Still not quite right..."  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; 6 iterations, 2 hours, mediocre outcome&lt;/p&gt;
&lt;h3&gt;
  
  
  The New Way (With Specs)
&lt;/h3&gt;

&lt;p&gt;I wrote a precise specification:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Blood Drip Animation Specification&lt;/span&gt;

&lt;span class="gs"&gt;**Trigger:**&lt;/span&gt; Mouse hover over movie poster

&lt;span class="gs"&gt;**Behavior:**&lt;/span&gt;
WHEN user hovers over poster,
THE Theme_Engine SHALL:
&lt;span class="p"&gt;1.&lt;/span&gt; Spawn blood droplet at random X position along top edge
&lt;span class="p"&gt;2.&lt;/span&gt; Animate droplet falling with these properties:
&lt;span class="p"&gt;   -&lt;/span&gt; Initial velocity: 0
&lt;span class="p"&gt;   -&lt;/span&gt; Acceleration: 980 pixels/s² (gravity)
&lt;span class="p"&gt;   -&lt;/span&gt; Shape: Teardrop (elongates during fall)
&lt;span class="p"&gt;   -&lt;/span&gt; Duration: 1.2 seconds
&lt;span class="p"&gt;   -&lt;/span&gt; Easing: ease-in
&lt;span class="p"&gt;3.&lt;/span&gt; At bottom impact:
&lt;span class="p"&gt;   -&lt;/span&gt; Spawn 10-20 particles in radial pattern
&lt;span class="p"&gt;   -&lt;/span&gt; Particle velocity: Random 50-150 pixels/s
&lt;span class="p"&gt;   -&lt;/span&gt; Particle lifetime: 0.5 seconds
&lt;span class="p"&gt;   -&lt;/span&gt; Particle fade: Linear opacity 1→0

&lt;span class="gs"&gt;**Performance:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Must maintain 60 FPS
&lt;span class="p"&gt;-&lt;/span&gt; Use transform (not position) for GPU acceleration
&lt;span class="p"&gt;-&lt;/span&gt; Respect prefers-reduced-motion

&lt;span class="gs"&gt;**Accessibility:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; No animation if prefers-reduced-motion is set
&lt;span class="p"&gt;-&lt;/span&gt; Does not interfere with poster clickability
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Kiro's output:&lt;/strong&gt; Perfect code, first try, 10 minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Difference
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Without specs:&lt;/strong&gt; Ambiguous requirements → multiple iterations → frustration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With specs:&lt;/strong&gt; Precise requirements → exact implementation → ship it&lt;/p&gt;

&lt;p&gt;I created &lt;strong&gt;25 specifications&lt;/strong&gt; like this for Blood Stream. Each one eliminated ambiguity and gave Kiro testable acceptance criteria.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Files in &lt;code&gt;/.kiro/specs/&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;blood-effects.spec.md&lt;/code&gt; - All blood animations&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ouija-search.spec.md&lt;/code&gt; - Ouija board interface&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;morgue-watchlist.spec.md&lt;/code&gt; - Watchlist functionality
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;video-player.spec.md&lt;/code&gt; - Player controls&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;performance.spec.md&lt;/code&gt; - Speed and FPS targets&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Part 2: Agent Hooks (Automation That Saves Hours)
&lt;/h2&gt;

&lt;p&gt;Agent hooks are Kiro's superpower for automation. I created four hooks that ran automatically during development:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Image Optimization Hook
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; TMDb API returns high-resolution posters (5MB+ each). Loading 20 posters = 100MB of data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Hook automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compresses JPEGs to 80% quality&lt;/li&gt;
&lt;li&gt;Converts to WebP with JPEG fallback&lt;/li&gt;
&lt;li&gt;Generates responsive srcsets (w300, w500, original)&lt;/li&gt;
&lt;li&gt;Caches optimized versions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; Image load time reduced by 60%. Saved ~4 hours of manual optimization.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Performance Testing Hook
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Animations look great but might tank performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Hook runs Lighthouse on every build and:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fails build if performance score drops below 85&lt;/li&gt;
&lt;li&gt;Alerts if animations drop below 50 FPS&lt;/li&gt;
&lt;li&gt;Generates performance reports in &lt;code&gt;/.kiro/reports/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; Caught 3 performance regressions before they reached production. No more manual Lighthouse testing.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Theme Consistency Hook
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; With 47 components, maintaining consistent horror aesthetics is hard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Hook validates every component:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Colors match defined palette (--blood-red, --darkness, etc.)&lt;/li&gt;
&lt;li&gt;Fonts use approved families (Creepster, Nosifer, Inter)&lt;/li&gt;
&lt;li&gt;Animation durations follow standards&lt;/li&gt;
&lt;li&gt;Accessibility requirements are met&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; Zero visual inconsistencies. Prevented "oops, I used the wrong red" mistakes.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Deployment Hook
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Deployment had 15 manual steps. Easy to forget something.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; One command automates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript type checking&lt;/li&gt;
&lt;li&gt;Test suite execution&lt;/li&gt;
&lt;li&gt;Production build&lt;/li&gt;
&lt;li&gt;Asset optimization&lt;/li&gt;
&lt;li&gt;Vercel upload&lt;/li&gt;
&lt;li&gt;Deployment notification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; Deployment time: 15 minutes → 2 minutes. Zero human error.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Hook Workflow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Example: Image Optimization Hook&lt;/span&gt;
&lt;span class="c1"&gt;// /.kiro/hooks/optimize-images.hook.js&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;onImageFetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;optimized&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;sharp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;withoutEnlargement&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;jpeg&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;quality&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toBuffer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;webp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;sharp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;withoutEnlargement&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;webp&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;quality&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toBuffer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;jpeg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;optimized&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;webp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;webp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;srcset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;generateSrcset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hooks transformed development from &lt;strong&gt;reactive&lt;/strong&gt; (finding bugs after they happen) to &lt;strong&gt;proactive&lt;/strong&gt; (preventing bugs automatically).&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 3: Steering Docs (Teaching Kiro Your Standards)
&lt;/h2&gt;

&lt;p&gt;Steering docs are like having a senior developer who knows your preferences sitting next to you. I created three:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Horror Theme Consistency
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Theme Requirements&lt;/span&gt;

&lt;span class="gs"&gt;**Typography:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Headings: Creepster (Google Fonts)
&lt;span class="p"&gt;-&lt;/span&gt; Dripping text: Nosifer
&lt;span class="p"&gt;-&lt;/span&gt; Body: Inter (readable despite horror theme)

&lt;span class="gs"&gt;**Colors:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Blood red: #DC143C (primary)
&lt;span class="p"&gt;-&lt;/span&gt; Dark blood: #8B0000 (hover states)
&lt;span class="p"&gt;-&lt;/span&gt; Pure black: #000000 (backgrounds)
&lt;span class="p"&gt;-&lt;/span&gt; Bone white: #F5F5F5 (text)

&lt;span class="gs"&gt;**Forbidden:**&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Bright colors (no pure white backgrounds)
&lt;span class="p"&gt;-&lt;/span&gt; Comic Sans or playful fonts
&lt;span class="p"&gt;-&lt;/span&gt; Instant transitions (everything needs motion)
&lt;span class="p"&gt;-&lt;/span&gt; Generic errors ("Error 404" → "The spirits are restless...")

&lt;span class="gs"&gt;**Examples:**&lt;/span&gt;

❌ BAD:
return &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;className=&lt;/span&gt;&lt;span class="s"&gt;"error"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Error loading movie&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

✅ GOOD:
return (
  &amp;lt;motion.div 
    initial={{ opacity: 0 }}
    animate={{ opacity: 1 }}
    className="text-blood-red font-nosifer"
&lt;span class="gt"&gt;  &amp;gt;&lt;/span&gt;
    The spirits refuse to reveal this film...
  &lt;span class="nt"&gt;&amp;lt;/motion.div&amp;gt;&lt;/span&gt;
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Code Quality Standards
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Code Requirements&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; TypeScript: Strict mode, no 'any' types
&lt;span class="p"&gt;-&lt;/span&gt; Components: Functional with hooks (no classes)
&lt;span class="p"&gt;-&lt;/span&gt; Performance: No operations in render loops
&lt;span class="p"&gt;-&lt;/span&gt; Accessibility: ARIA labels, keyboard navigation
&lt;span class="p"&gt;-&lt;/span&gt; Testing: Every component has test file

&lt;span class="gu"&gt;## Patterns to Follow&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Custom hooks for reusable logic
&lt;span class="p"&gt;-&lt;/span&gt; Context for global state
&lt;span class="p"&gt;-&lt;/span&gt; Error boundaries around routes
&lt;span class="p"&gt;-&lt;/span&gt; Lazy loading for route-level splitting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Performance Targets
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Performance Requirements&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Animations: 60 FPS, fallback if dropping frames
&lt;span class="p"&gt;-&lt;/span&gt; Images: Lazy load, WebP with JPEG fallback
&lt;span class="p"&gt;-&lt;/span&gt; Bundle: &amp;lt;500KB gzipped
&lt;span class="p"&gt;-&lt;/span&gt; API: Debounce search (500ms), cache responses
&lt;span class="p"&gt;-&lt;/span&gt; Lighthouse: Score must stay &amp;gt;85
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Magic: Negative Examples
&lt;/h3&gt;

&lt;p&gt;The breakthrough was showing Kiro what &lt;strong&gt;NOT&lt;/strong&gt; to do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;❌ BAD: Linear animations (robotic)
✅ GOOD: Easing functions (natural motion)

❌ BAD: Autoplay sound (annoying)
✅ GOOD: User-initiated audio (respectful)

❌ BAD: "Loading..." (generic)
✅ GOOD: "Summoning spirits..." (thematic)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; Before negative examples, 30% of generated components needed corrections. After: 5%.&lt;/p&gt;

&lt;p&gt;Steering docs taught Kiro my aesthetic vision and technical standards, eliminating back-and-forth.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 4: Vibe Coding (Creative Polish)
&lt;/h2&gt;

&lt;p&gt;Specs are perfect for logic. But for creative polish? Vibe coding shines.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example: Blood Physics Refinement
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Spec gave me:&lt;/strong&gt; Working blood animation&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Vibe coding gave me:&lt;/strong&gt; Realistic blood physics&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conversation with Kiro:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "The blood feels too uniform. Real blood has variation."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kiro:&lt;/strong&gt; &lt;em&gt;Adds random droplet sizes&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Good! But the fall speed should vary with size. Larger drops fall faster."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kiro:&lt;/strong&gt; &lt;em&gt;Implements terminal velocity based on droplet mass&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Perfect. Now add slight wind drift—like 5-10 pixels left or right."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kiro:&lt;/strong&gt; &lt;em&gt;Adds random horizontal velocity with damping&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; "Amazing. The splatter needs more chaos though—some particles should bounce."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kiro:&lt;/strong&gt; &lt;em&gt;Adds collision detection and restitution coefficient&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Blood that looks genuinely realistic. This creative refinement doesn't belong in specs—it's experimentation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Hybrid Approach: Specs + Vibe Coding
&lt;/h2&gt;

&lt;p&gt;I used both strategically:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specs for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Complex logic (search, watchlist, player controls)&lt;/li&gt;
&lt;li&gt;✅ Performance requirements (FPS, load times)&lt;/li&gt;
&lt;li&gt;✅ Consistency (theme, accessibility)&lt;/li&gt;
&lt;li&gt;✅ Testing (acceptance criteria → test cases)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Vibe Coding for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Creative exploration ("What if particles had random trajectories?")&lt;/li&gt;
&lt;li&gt;✅ Aesthetic refinement ("Make this feel more ominous")&lt;/li&gt;
&lt;li&gt;✅ Quick experiments (testing ideas without formal specs)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The combination was more powerful than either alone.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Results
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Technical Achievement
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Duration:&lt;/strong&gt; 21 days&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code:&lt;/strong&gt; 5,234 lines of TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Components:&lt;/strong&gt; 47&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animations:&lt;/strong&gt; 50+&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; Lighthouse 94/100, 60 FPS consistent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bundle:&lt;/strong&gt; 387KB gzipped&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hackathon Success
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🏆 &lt;strong&gt;Best Costume Contest:&lt;/strong&gt; $5,000&lt;/li&gt;
&lt;li&gt;🏆 &lt;strong&gt;Most Creative:&lt;/strong&gt; $2,500&lt;/li&gt;
&lt;li&gt;🥈 &lt;strong&gt;Overall 2nd Place:&lt;/strong&gt; $20,000&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total:&lt;/strong&gt; $27,500&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Beyond Hackathon
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;234 GitHub stars in first week&lt;/li&gt;
&lt;li&gt;Featured on Product Hunt (3rd product of the day)&lt;/li&gt;
&lt;li&gt;TechCrunch mention&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2 acquisition offers&lt;/strong&gt; (including from Shudder!)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Lessons
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Specs Eliminate Ambiguity
&lt;/h3&gt;

&lt;p&gt;"Make it look good" → 10 iterations&lt;br&gt;&lt;br&gt;
"Follow this spec" → 1 iteration&lt;/p&gt;

&lt;p&gt;Write precise specifications. Kiro will deliver precisely.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Automate Everything Possible
&lt;/h3&gt;

&lt;p&gt;Manual testing wastes time. Hooks catch issues automatically.&lt;/p&gt;

&lt;p&gt;Set up hooks early. They pay dividends immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Teach Kiro Your Standards
&lt;/h3&gt;

&lt;p&gt;Generic prompts → generic results&lt;br&gt;&lt;br&gt;
Steering docs → results that match your vision&lt;/p&gt;

&lt;p&gt;Show negative examples. "Don't do X" is as important as "Do Y."&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Combine Approaches
&lt;/h3&gt;

&lt;p&gt;Specs for structure. Vibe coding for polish.&lt;/p&gt;

&lt;p&gt;Use the right tool for each task. Don't force one approach for everything.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. The &lt;code&gt;.kiro&lt;/code&gt; Directory is Gold
&lt;/h3&gt;

&lt;p&gt;Track it in Git. Show judges. Proves systematic AI usage.&lt;/p&gt;

&lt;p&gt;My &lt;code&gt;.kiro&lt;/code&gt; directory convinced judges I used Kiro strategically, not just as a fancy autocomplete.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Future: Themed Entertainment Platforms
&lt;/h2&gt;

&lt;p&gt;Blood Stream proves themed platforms are viable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Horror today. Thriller tomorrow. Sci-Fi next week.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Netflix works for everything. But specialists could work better for specific genres.&lt;/p&gt;

&lt;p&gt;Imagine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mystery Stream:&lt;/strong&gt; UI like a detective's case board&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Western Stream:&lt;/strong&gt; Old saloon aesthetics
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sci-Fi Stream:&lt;/strong&gt; Holographic interfaces&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each genre has superfans who'd pay premium for immersive experiences.&lt;/p&gt;

&lt;p&gt;Blood Stream is just the beginning.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://bloodstream.vercel.app" rel="noopener noreferrer"&gt;https://bloodstream.vercel.app&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; [GitHub link]&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Kiro Specs:&lt;/strong&gt; Check the &lt;code&gt;/.kiro&lt;/code&gt; directory&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React 18 + TypeScript&lt;/li&gt;
&lt;li&gt;TMDb API (free!)&lt;/li&gt;
&lt;li&gt;Framer Motion&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;Kiro AI&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AI coding isn't about prompting. It's about &lt;strong&gt;structured specifications that eliminate ambiguity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Kiro didn't just speed up coding—it changed how I think about development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Before:&lt;/strong&gt; Write code → test → debug → rewrite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;After:&lt;/strong&gt; Write spec → Kiro generates → test → ship&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difference? &lt;strong&gt;Confidence.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With Kiro's spec-driven approach, agent hooks, and steering docs, I knew code would work before running it.&lt;/p&gt;

&lt;p&gt;That confidence let me ship Blood Stream in 21 days.&lt;/p&gt;

&lt;p&gt;What will you build?&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;#kiro #ai #webdev #hackathon #react #typescript&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built for Kiroween 2025.All in 21 days with Kiro AI.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Want to learn more? Follow me for updates on themed entertainment platforms and AI-assisted development.&lt;/em&gt;&lt;/p&gt;




</description>
    </item>
  </channel>
</rss>
