Documenting how I summoned a production-ready Halloween study app from the void in <8 hrs, complete with ghost companions, cursed achievements, & blood-moon themes using Kiro's spec-driven sorcery.
Why I built This
Picture this: It's late at night, and you're trying to focus on studying. But your brain? Completely checked out. You open yet another productivity app - clean, minimal, professional. And utterly boring.
Here's what I realized: productivity tools don't have to be soulless.
So I asked myself three questions:
- What if your study companion was an actual ghost that reacted to your work?
- What if your timer was a literal coffin with a blood-red progress bar?
- What if hitting your goals felt like unlocking cursed achievements in a horror retro themed game?
The answer? I built it. All of it. In <8 hrs.
Not a prototype. Not a proof-of-concept. A fully functional, production-ready Halloween productivity app with ghost companions, atmospheric themes, achievements, comprehensive testing, & living documentation.
Here's exactly how I did it using Kiro's spec-driven development.
โก How I Built This in <8 Hours
Let me break down exactly what happened, hour by hour. No fluff, just actual timeline:
First 30 mins - I brain-dumped everything into a document. Theme ideas, UI concepts, features I wanted, page layouts. It was messy, unstructured, but it captured my vision for the project.
Next 12 mins - This is where things got wild. I dumped my entire plan into Kiro's specs section. In 2 minutes, it generated a complete requirements.md with 8 user stories and 40+ acceptance criteria. 5 mins later, a full design.md with architecture and 22 correctness properties. Another 5 mins, and I had tasks.md with 100+ executable subtasks. 12 minutes total for complete specs.
Hours 1-3 - I clicked through those 100+ tasks one by one. Each click, Kiro generated the code. Timer components. Ghost animations. Theme system. Achievement logic. Everything. From an empty folder to a working MVP in under 3 hours.
Next 30 mins - Built the production bundle, tested locally, verified everything worked. No console errors. Clean.
Hours 4-7 - Time to make it beautiful. I switched to vibe coding mode. Added blood droplets falling in the Vampire theme. Haunting tree silhouettes for Witch Forest. Flickering moon phases. Ghost-specific audio. 6 horror fonts. CRT scanline effects. All the atmospheric magic.
Final 30 mins - Asked Kiro to update the specs to match my final code (living documentation), then deployed to Netlify. Live on the internet.
Total time: 7.5 hours from rough idea to production deployment.
๐ What I Built
The Spooky Study Dashboard
A Halloween-themed Pomodoro timer that transforms studying into an immersive supernatural experience.
Imagine a productivity app where your timer lives inside a coffin, your study companion is a ghost with emotions, & hitting your goals unlocks cursed achievements. Where blood droplets fall across your screen in Vampire mode, & a flickering moon watches over you at midnight. Where every study session feels like you're leveling up in a horror game.
That's Spooky Study Dashboard - a fully functional productivity tool wrapped in a haunting, interactive Halloween aesthetic that actually makes you want to study.
๐ฆ Core Features
๐ป Five Ghost Companions with Emotions
Choose your spectral study buddy:
- Baby Ghost ๐ป - Innocent and encouraging
- Witch Ghost ๐ง - Mystical and wise
- Vampire ๐ง - Sophisticated and focused
- Werewolf ๐บ - Fierce and determined
- Angel ๐ผ - Heavenly and protective
Each has two emotional states (sleepy ๐ด / mischievous ๐) & reacts to your study sessions with Framer Motion animations. They float when idle, bounce during studies, & drift during breaks.
โฐ๏ธ Coffin-Shaped Timer
Forget boring circular progress bars. Your countdown lives in an animated coffin:
- Skull and crossbones decorations ๐
- Blood-red progress bar
- Flickering time display in horror fonts
- Session indicators: "๐ CURSED STUDY SESSION" / "โ ๏ธ HAUNTED REST TIME"
- Status: ACTIVE ๐ฅ / PAUSED โธ๏ธ
๐ฉธ Four Spooky Themes
Each theme transforms the entire interface with CSS-animated spooky effects:
| Theme | Palette | Animations |
|---|---|---|
| Vampire Crimson ๐ฉธ | Dark reds (#8B0000, #DC143C) | Falling blood droplets, swooping bats |
| Witch Forest ๐ฒ | Mystical greens (#2D5016) + purple | Haunting tree silhouettes, forest creatures |
| Haunted Midnight ๐ | Deep purples (#4A148C, #7B1FA2) | Flickering moon phases, bat formations |
| Graveyard ๐ชฆ | Monochrome grays + toxic green | Floating spirits, cemetery fog |
All themes meet WCAG AA accessibility standards.
๐ Cursed Achievements
Unlock five spooky achievements:
- Cursed Consistency ๐ฅ - Study 7 consecutive days
- Demon of Discipline ๐ - Complete 10+ sessions in 7 days
- Witching Hour Warrior ๐ - Study between midnight-3 AM
- Sleepy Survivor ๏ฟฝ - Complete 3 sessions with sleepy ghost
- Mischievous Master ๐ป - Experience 5 jumpscares
๐ Soul Tracker Analytics
- Tarot card-styled metric displays (daily/weekly stats)
- Recharts-powered productivity visualization
- Session history with ghost emotion tracking
- Productivity score from completion rates & consistency
๐ Immersive Audio System
- Ghost-specific ambient sounds
- Scary effects on timer interruptions
- Success celebration audio
- Volume controls with visual slider
๐งโโ๏ธ The Kiro Magic: How I Built This in 7.5 Hours
๐ฏ Moment #1: Specs in 12 Mins
I spent 30 mins brain-dumping my project plan:
- Theme, UI, features, sections, functionalities
- Landing page + main page structure
- All the spooky details I wanted
Then I dumped it ALL into Kiro's specs section.
What happened next blew my mind:
โฑ๏ธ 2 mins โ requirements.md generated
8 requirements, 40+ EARS-compliant acceptance criteria
โฑ๏ธ 5 mins โ design.md created
Complete architecture, 22 correctness properties, testing strategy
โฑ๏ธ 5 mins โ tasks.md generated
20 major tasks, 100+ executable subtasks
Total: 12 mins for complete specs.
This wasn't documentation. This was a complete blueprint for building the entire application.
What would have taken me 1-2 hrs of brainstorming & planning took 12 mins.
๐ฏ Moment #2: Empty Folder to MVP in 3 Hrs
Here's where my mind exploded.
In the tasks.md file, I could click on each task to execute it:
- [ ] 6. Timer Components
- [ ] 6.1 Create TimerDisplay component
- [ ] 6.2 Create TimerControls component
- [ ] 6.3 Create SessionConfig component
Click task 6.1 โ Kiro generated complete TimerDisplay with coffin shape and progress bar
Click task 6.2 โ Kiro implemented controls with validation and error handling
Click task 6.3 โ Kiro wrote SessionConfig with duration settings
I clicked through 100+ tasks, one at a time.
150-180 mins later: Working MVP.
From an empty folder to a fully functional application. Each task built on the previous one. Zero context loss. No "what was I doing again?" moments.
๐ The Spec-Driven Advantage
Instead of jumping straight into code, I started with comprehensive specs in .kiro/specs/spooky-study-dashboard/:
- requirements.md - 8 user stories with 40+ acceptance criteria
- design.md - Complete architecture, 22 correctness properties, data models
- tasks.md - 20 implementation phases with 100+ granular tasks
This became my single source of truth. Every feature, every component, every test had a clear purpose traced back to the requirements.
Before Kiro Specs:
- โ Vague feature ideas floating in my head
- โ Forgetting edge cases mid-implementation
- โ Unclear testing priorities
- โ Scope creep everywhere
With Kiro Specs:
- โ Crystal-clear requirements with acceptance criteria
- โ Correctness properties that guided testing strategy
- โ Systematic task breakdown preventing overwhelm
- โ Easy progress tracking (100+ tasks completed!)
๐ฌ Vibe Coding: The Creative Accelerator
While specs provided structure, vibe coding in Kiro's chat handled the creative heavy lifting.
Example: Coffin Timer
Me: "Create a coffin-shaped timer with vintage horror aesthetics and progress visualization"
Kiro generated the entire TimerDisplay component with:
- Complex CSS for coffin shape with skull and crossbones
- Animated blood-red progress bar at the bottom
- Decorative elements (๐, bones, cross, coffin handles)
- Session type indicators (๐ CURSED STUDY SESSION / โ ๏ธ HAUNTED REST TIME)
- Status indicator (ACTIVE ๐ฅ / PAUSED โธ๏ธ)
- Full accessibility attributes with screen reader support
- Responsive design
Example: Landing Page
Me: "Make it feel like entering a haunted mansion with floating spooky elements and interactive ghost cursor"
Kiro generated:
- Mouse-tracking ghost follower
- 8 floating animated emojis (๐ป๐๐ฆ๐ท๏ธ๐๐ธ๏ธ๐งโโ๏ธโฐ๏ธ)
- Feature cards with hover effects
- CRT overlay and scanline effects
- Smooth entrance animations
- "Enter the Crypt" call-to-action button
Then: "Add more vintage horror vibes with blood-flow text effects"
Kiro immediately added gradient animations and enhanced the typography system with 6 horror fonts (Creepster, Nosifer, Butcherman, Eater, Chiller, Griffy).
๐จ Theme: 500+ Lines of CSS in Mins
Me: "Create four Halloween themes with unique CSS animations for each - blood droplets for vampire, strange & unnatural haunting trees for witch forest, flickering moonlight for midnight, & floating spirits for graveyard. Each theme should have its own color palette and meet WCAG AA accessibility standards."
Kiro generated 500+ lines of sophisticated CSS with:
- Theme-specific
::beforeand::afterpseudo-elements - Complex keyframe animations (blood-fall, haunting-sway, moon-phases, spirits-float)
- Dynamic color application via CSS variables
- Smooth theme transitions
- WCAG AA compliant color contrast ratios
๐งช Property-Based Testing: Finding Bugs I'd Never Catched( Not so easily atleast)
Kiro helped me implement comprehensive testing that went beyond traditional unit tests.
Traditional tests: "Does this specific input work?"
Property-based tests: "Does this work for ALL possible inputs?"
Using fast-check, I wrote tests that ran 100+ iterations with random inputs:
/**
* Feature: spooky-study-dashboard, Property 12: Cursed Consistency achievement
* Validates: Requirements 6.1
*/
it('should unlock Cursed Consistency for 7 consecutive days', () => {
fc.assert(
fc.property(
arbSessionHistory(7, 20), // Random session history
(sessions) => {
const hasConsecutive = hasConsecutiveDays(sessions, 7);
const achievement = checkAchievement('cursed-consistency', sessions);
expect(achievement.unlocked).toBe(hasConsecutive);
}
),
{ numRuns: 100 }
);
});
This found bugs I would NEVER have caught manually:
- Edge cases with midnight boundary sessions
- Timezone handling issues
- Empty session history handling
- Consecutive day calculation with gaps
Testing Coverage:
- 100+ unit tests covering hooks, utilities, and components
- Integration tests for context providers
- Property-based tests for complex logic (achievements, metrics, persistence)
- 22 correctness properties from design doc mapped to tests
๐ Living Documentation
After all the vibe coding enhancements, my code had evolved beyond the original specs.
So I asked Kiro:
"Analyze all files in the project and refine the specs to match the final implementation"
Kiro scanned every component, hook, and utility, then:
โ
Updated requirements.md with new features
โ
Refined design.md with actual architecture
โ
Adjusted tasks.md to reflect what was built
Now my specs are living documentation - they perfectly describe the product I made it to be.
๐ฏ What This Proves
Here's what I shipped in 7.5 hours:
A production-ready application. Not a prototype. Not a hackathon demo that breaks when you click around. A real app with:
- โ 8 user stories and 40+ acceptance criteria
- โ Complete architecture with 22 correctness properties
- โ 100+ unit tests including property-based testing
- โ Living documentation that matches the actual code
- โ Deployed and live on Netlify
The Traditional Way vs. The Kiro Way
Let's be honest about what this would normally take:
Traditional Development:
- Spend 1-2 hrs writing specs manually
- Another 3-5 hrs setting up the project
- 10-15 hrs building core features
- 6-10 hrs on polish & animations
- 2-4 hrs writing tests & fixing bugs
- 3-5 hrs documenting everything
- 1-2 hrs deploying
Total: 40+ hours spread over a week
With Kiro's Spec-Driven Development:
- 30 mins brain-dumping ideas
- 12 mins for Kiro to generate complete specs
- 3 hrs clicking through tasks to build the MVP
- 30 mins to deploy and test
- 3 hrs of creative vibe coding
- 30 mins to update specs and deploy
Total: 7.5 hours in a single day
That's not just 8x faster. It's a completely different way of building software. And the quality? Better. Because every feature was spec'd, every edge case was considered, and every component was tested before I even started coding.
๐ About the Project
Architecture
- Frontend: React 19.2.0 with Vite 7.2.4
- Styling: Tailwind CSS 4.1.17 + custom horror-themed CSS
- Animations: Framer Motion 12.23.24
- Charts: Recharts 3.5.1
- Testing: Vitest 4.0.14 + fast-check 4.3.0
- State: React Context + Custom Hooks
- Storage: LocalStorage with error handling
Key Features
โ
Fully Accessible - WCAG 2.1 AA compliant
โ
Keyboard Navigation - Complete keyboard support
โ
Screen Reader Support - ARIA labels and live regions
โ
Offline-First - All data stored locally
โ
Responsive Design - Works on all screen sizes
โ
Error Boundaries - Graceful error handling
โ
Performance Optimized - Lazy loading and code splitting
Code Quality
- 100+ unit tests covering hooks, utilities, & components
- Integration tests for context providers
- Property-based tests for complex logic
- JSDoc comments throughout codebase
- Comprehensive error handling for storage & validation
๐ก Key Learnings
1. Specs First, Code Second
Starting with specs means:
- โ Clear requirements before writing code
- โ Defined correctness properties for testing
- โ Systematic implementation plan
- โ Comprehensive test coverage
- โ Living documentation
You know exactly what to build before you build it.
2. Specs Prevent Scope Creep
Having written requirements kept me focused. When I wanted to add "ghost customization with user-uploaded images" mid-project, I could see it wasn't in the spec and saved it for v2.
3. Properties Guide Testing
The 22 correctness properties from the design doc became my testing checklist. Each property mapped to specific test cases.
4. Vibe Coding Accelerates Creativity
Describing visual ideas to Kiro and getting working code back in seconds let me iterate on design much faster than traditional coding.
5. The Combo is Powerful
Specs + vibe coding is greater than the sum of its parts:
- Specs provide structure and correctness
- Vibe coding provides creative freedom
- Together they enable fast development without sacrificing quality
๐ Try It Yourself
๐ Step into the darkness: Spooky Study dashboard
๐ฎ Peek behind the curtain:
๐ Spooky Study Dashboard
A Halloween-themed productivity application that transforms traditional pomodoro timer functionality into an immersive supernatural experience. Study with ghost companions, unlock spooky achievements, and track your productivity through atmospheric themes and engaging audio experiences.
Check it out here:- https://spooky-study-dashboard.netlify.app
โจ Features
๐ฐ๏ธ Intelligent Timer System
- Pomodoro Technique: Configurable work/break sessions with visual progress tracking
- Session Management: Customizable study (25-90 min) and rest (5-20 min) durations
- Visual Feedback: Coffin-shaped timer display with animated progress indicators
- Audio Cues: Success sounds and atmospheric feedback for session transitions
๐จ Dynamic Theme System
- 4 Atmospheric Themes: Vampire Crimson, Witch Forest, Haunted Midnight, and Graveyard
- WCAG AA Compliant: All themes meet accessibility standards for color contrast
- CSS Variable Integration: Seamless theme switching with Tailwind CSS
- Animated Backgrounds: CSS-based environmental animations for each theme
๐ป Ghost Companion System
- 5 Supernatural Companions: Baby Ghost, Witch Ghostโฆ
Witness the magic in motion:
Captured moments from the other side:
Warning: May cause sudden urges to study productively ๐ฑ๐โ ๏ธ
Quick Start
git clone https://github.com/Divya4879/Spooky-Study-Dashboard.git
cd spooky-study-dashboard
npm install
npm run dev
๐ Final Thoughts
Building Spooky Study Dashboard taught me that productivity tools don't have to be boring. By combining:
- Spec-driven development for structure and correctness
- Vibe coding for rapid creative iteration
- Halloween theming for engagement and delight
- Accessibility-first design for inclusivity
- Property-based testing for comprehensive coverage
I created something that's both functionally robust and genuinely fun to use.
Kiro's spec system gave me confidence that every feature was properly designed and tested. Vibe coding let me explore creative ideas without getting bogged down in boilerplate. Together, they enabled me to build a polished, feature-rich application in just 7.5 hours.
Whether you're a student looking for a more engaging study tool, a developer interested in spec-driven development, or someone who just loves Halloween, I hope Spooky Study Dashboard brings a little supernatural joy to your productivity routine.













Top comments (0)