Inspiration
The tech industry has a graveyard of beloved APIs that have been shut down: Google+, Yahoo Answers, Vine, Parse.com, and countless others. Developers who built on these platforms were left scrambling when they disappeared. We wondered: what if we could bring these APIs back to life, even if just to answer questions about what they once were? What if we could create a mystical, engaging way to interact with the "spirits" of dead APIs using AI?
OuijaGPT was born from this playful yet practical idea: combine nostalgia, humor, and cutting-edge AI to resurrect discontinued APIs through a spooky Ouija board interface.
What it does
OuijaGPT is a mystical web application that lets you communicate with "dead" APIs through an AI-powered Ouija board interface. Here's what makes it special:
- Ouija Board Interface: Ask questions by typing or speaking, and watch the planchette glide across the board to spell out AI-generated responses in the voice of the deceased API
- API Graveyard: Browse a cemetery of 8 dead APIs (Google+, Yahoo Answers, Vine, Windows Phone Store, Parse.com, and more) with detailed obituaries, death dates, and causes of death
- AI-Powered Responses: GPT-4 channels the "personality" of each dead API to provide contextual, character-driven answers
- Voice Input: Use the Web Speech API to speak your questions aloud for a truly immersive séance experience
- Atmospheric Effects: Flickering candles, fog layers, eerie sound effects, and smooth animations create a haunting ambiance
- Spirit Guide: An AI assistant recommends which dead API to summon based on your query
How we built it
We used Kiro extensively throughout development, leveraging its spec-driven development workflow:
Specification Phase:
- Created formal requirements using EARS (Easy Approach to Requirements Syntax) patterns
- Designed the system architecture with correctness properties for testing
- Built an actionable task list with 20+ implementation steps
Tech Stack:
- Frontend: React + TypeScript + Vite for a type-safe, fast UI
- Backend: Node.js + Express + TypeScript for RESTful APIs
- Database: Prisma + SQLite with 8 seeded dead APIs
- AI: OpenAI GPT-4 for intelligent, character-driven responses
- Audio: Web Audio API for atmospheric sound effects
- Voice: Web Speech API for voice input
Kiro Integration:
- Specs: Complete requirements, design, and task documents in
.kiro/specs/ - Hooks: Automated testing and environment checks in
.kiro/hooks/ - Steering: Project-specific guidelines in
.kiro/steering/for consistent code quality
Development Process:
- Defined user stories and acceptance criteria
- Created architectural design with component interfaces
- Implemented features incrementally following the task list
- Integrated OpenAI API with personality-driven prompts
- Built atmospheric UI with CSS animations and Web Audio API
- Added voice input for immersive interaction
Challenges we ran into
1. LLM Prompt Engineering: Getting GPT-4 to consistently respond "in character" as different dead APIs required careful prompt design. We had to include API personality traits, historical context, and tone guidelines in each prompt.
2. Planchette Animation: Creating smooth, natural-looking movement for the Ouija board planchette was tricky. We experimented with CSS transitions, transforms, and timing functions to achieve the right mystical feel.
3. Voice Input Reliability: The Web Speech API behaves differently across browsers. We had to implement fallbacks and clear visual feedback to ensure users knew when voice input was active.
4. Z-Index Layering: With fog effects, candles, overlays, and the Ouija board, managing z-index layers became complex. We had to carefully orchestrate which elements appeared on top while maintaining interactivity.
5. TypeScript Type Safety: Ensuring proper typing across the full stack required defining comprehensive interfaces for API responses, database models, and component props.
6. Atmospheric Balance: Finding the right balance between "spooky" and "usable" was an iterative process. Too much fog or too many effects made the UI hard to use; too little lost the mystical vibe.
Accomplishments that we're proud of
- Spec-Driven Development: We followed a formal specification process with requirements, design, and tasks, demonstrating disciplined software engineering
- Real AI Integration: We didn't fake it, GPT-4 actually powers the responses with unique personalities for each API
- Polished UX: The animations, sound effects, voice input, and visual design create a genuinely immersive experience
- Full-Stack TypeScript: Type safety throughout the entire application reduces bugs and improves maintainability
- Kiro Showcase: Our
.kirodirectory demonstrates practical use of specs, hooks, and steering for AI-assisted development
What we learned
Technical Skills:
- Advanced prompt engineering for character-driven AI responses
- Web Audio API for procedural sound generation
- Web Speech API integration with browser compatibility handling
- CSS animation techniques for smooth, atmospheric effects
- Prisma ORM for type-safe database operations
Development Process:
- The value of formal specifications before coding
- How Kiro's specs, hooks, and steering improve development velocity
- Balancing creativity with usability in themed applications
- The importance of incremental development and testing
AI Integration:
- LLMs can convincingly roleplay as different entities with proper context
- Prompt design is as important as the code itself
- Real-time AI responses require careful error handling and user feedback
What's next for OuijaGPT
Short Term:
- Add more dead APIs to the graveyard (Google Reader, Orkut, Clippy, etc.)
- Implement collaborative séance sessions where multiple users can summon APIs together
- Create ritual scripts—reusable query templates for common questions
- Add a "Necromancy Lab" for experimenting with API resurrection techniques
Long Term:
- Build a community-driven API graveyard where users can submit obituaries
- Implement actual API emulation—not just Q&A, but functional endpoints
- Create a browser extension that detects dead API calls and suggests alternatives
- Develop a "Spirit Guide" that learns from user interactions to improve recommendations
Technical Improvements:
- Add property-based testing for correctness properties defined in the spec
- Implement caching for common queries to reduce API costs
- Add streaming responses for longer AI-generated answers
- Create a mobile-responsive version with touch-optimized Ouija board
OuijaGPT proves that even "dead" technology can live on through AI, creativity, and a little bit of digital necromancy. 🕯️👻
Built With
- api
- architecture
- audio
- cors
- css3
- express.js
- git
- gpt-4
- html5
- javascript
- kiro
- node.js
- npm
- openai
- orm
- prisma
- react
- restful
- router
- speech
- sqlite
- typescript
- vite
- web
Log in or sign up for Devpost to join the conversation.