Inspiration
Halloween brings people together through small, playful rituals. PumpkinSeed turns two of those rituals into interactive web experiences, using one reusable foundation rather than two unrelated codebases.
What it does
Trick-or-Treat Map lets visitors add fictional candy stops, describe treats and opening hours, filter markers, and leave thanks.
Ghost Story Relay lets visitors create a story room, contribute short story turns, vote on lines, and read the assembled spooky tale.
Both apps use local browser storage with same-browser tab synchronization. The shared core provides festival themes, reusable UI, language support, and a common data layer.
How we built it
PumpkinSeed is a pnpm monorepo built with React, TypeScript and Vite. The reusable @pumpkin-seed/core package lives in template/, with the two apps in separate folders. Leaflet powers the map, while CSS-variable themes give the shared interface its Halloween identity. GitHub Pages hosts both working apps.
How Kiro helped
Kiro CLI helped implement a focused accessibility improvement in the shared Modal: initial focus, Tab and Shift+Tab containment, Escape dismissal, and restoring focus to the invoking control. Starting from explicit acceptance criteria, it generated a focus helper, React integration and a test draft. We then refined callback stability and handling of hidden, inert and disabled elements, and verified the behavior in both apps. The repository includes the development record and the root .kiro specifications, steering and hooks.
Challenges and what we learned
The main challenge was making shared components behave consistently across two different experiences. Modal focus handling and browser-storage updates required explicit edge-case checks, not just a visual happy-path demo. A narrow, testable Kiro task made the generated changes easier to review and integrate.
Accomplishments
One shared starter supports two playable Halloween apps. The release includes a working public deployment, source and setup instructions, keyboard-accessible dialogs, and a short walkthrough demonstrating the main flows.
What's next
Extend the shared festival starter with more themes and activities, and add an optional hosted data service for cross-device participation.