Inspiration SuperMemo, created by Piotr Wozniak in the late 1980s, pioneered spaced repetition learning. Its Windows 95-era interface became iconic among memory enthusiasts. I wanted to resurrect that nostalgic aesthetic while supercharging it with modern AI—letting GPT-4 handle the tedious work of creating flashcards from any text.
The Kiroween theme added a fun twist: what if forgotten knowledge became "lost cards" haunting your study sessions?
What I Learned Spec-driven development dramatically reduces rework. Defining requirements, design, and tasks upfront meant Kiro could implement features correctly the first time CSS design tokens make theming manageable—the entire Win95 look comes from ~50 variables LLM prompt engineering for structured output (JSON flashcards) requires careful validation and retry logic IndexedDB is surprisingly capable for client-side persistence How I Built It Spec Phase: Created detailed requirements (10 user stories), architecture design (component hierarchy, service interfaces), and 22 implementation tasks in .kiro/specs/
Foundation: Built the Windows 95 design system with CSS tokens for colors (#c0c0c0), beveled borders, and pixel fonts
Core Features:
LLM service with OpenAI integration, retry logic, rate limiting Spaced repetition scheduler using SM-2 algorithm principles Knowledge tree for hierarchical card organization Polish: Added 27 custom 8-bit SVG icons, spooky mode with VHS distortion effects, and ghost characters
Challenges TypeScript + Vite quirk: erasableSyntaxOnly config rejected enums—had to convert to const objects State synchronization: Generated cards weren't appearing because the scheduling service set nextReviewDate to tomorrow instead of now LLM response parsing: GPT-4 occasionally returns malformed JSON; added robust validation and fallback parsing
Built With
- kiro
- nextjs
- openai
Log in or sign up for Devpost to join the conversation.