Building GRIMOIRE: A Responsive Storytelling Platform

Inspiration

GRIMOIRE started as a Halloween diary experiment, inspired by early-2000s web aesthetics, digital diaries, and interactive storytelling. The goal was to combine nostalgia with modern UX principles, a responsive interface design that behaves as a “living environment.”

What It Does

GRIMOIRE is a web-based storytelling platform with multiple interactive features:

Users explore a virtual space representing their personal diary, with rooms that can contain stories, scrapbooks, art canvases, and other interactive elements. The interface also responds to user actions such as tab switching, cursor inactivity, writing focus, and page exit. Certain elements animate or reveal messages if the user is inactive for a period of time. Additionally, users can read, write, and organize stories in a library system, with plans to support collaborative editing and co-created narrative spaces.

Framer Motion, Three.js, and Canvas are used to provide subtle environmental effects, interactive backgrounds, and micro-interactions with the aim of not overwhelming the user. The About page "changes costumes" with the aim of balancing immersion with usability. I also made sure to dim animations in writing-intensive sections while emphasizing interaction in exploration areas.

How It Was Built

The project uses a modern web stack:

  • React + TypeScript for a type-safe, component-based architecture
  • TailwindCSS for utility-first styling
  • Vite for optimized development and build workflows
  • Firebase (Auth + Firestore) for authentication, database, and real-time interactions
  • Custom animation hooks and internal state machines for managing behavior triggers
  • Utility modules for behavioral logic, performance monitoring, and error handling

Key technical highlights include:

  • Event-driven state machines to manage interactive behaviors predictably
  • Refactored, maintainable codebase with Kiro: automated cleanup, pattern enforcement, test generation, and component optimization
  • Performance optimization: lazy loading of heavy components, controlled re-rendering, and GPU acceleration where needed
  • Error handling and compliance: standardized error responses and FIPPA-compliant handling of user content

The .kiro folder tracks specifications such as the Haunted Diary spec, Scrapbook Flow spec, Room Interaction Rules, and Trigger Condition Definitions. These were essential for maintaining architectural coherence as the project evolved rapidly.

Challenges I Ran Into

  • Sensory Balance: Ensuring animations and reactive behaviors were immersive but not overwhelming required careful tuning.
  • State Conflicts: Multiple versions of components during rapid iteration led to inconsistencies that needed careful refactoring.
  • Behavioral Priority: Interactions sometimes competed (e.g., idle triggers versus cursor movement). Fine-tuning priorities was necessary to prevent conflicts.
  • Feature Complexity: Planned collaborative features and dynamic room creation required real-time sync logic, which presented technical and performance challenges.

Accomplishments

  • Successfully built a responsive interface that reacts to multiple user behaviors
  • Maintained a clean, scalable architecture using Kiro for refactoring, testing, and documentation
  • Developed immersive visual and interactive elements while preserving usability
  • Ensured all assets and workflows are copyright-friendly and FIPPA-compliant
  • Created a platform capable of future feature expansion, including personalized rooms and collaborative storytelling

Lessons Learned

  • Event-driven state machines are effective for managing complex UI behaviors
  • Careful UX planning is necessary to balance immersion and usability in interactive environments
  • Maintaining documentation and specifications in real-time is critical for rapid iteration
  • Structured AI-assisted tooling like Kiro can significantly improve code quality and testing coverage

What’s Next for GRIMOIRE

Future developments focus on feature expansion and collaboration:

  • Customizable Rooms: Users will be able to create their own rooms within the Dollhouse
  • Collaborative Storytelling: Multi-user editing will allow real-time updates will use Firebase with a permission system to manage editing and commenting rights
  • Audio Book: Add features to support audio books
  • Performance and UX Enhancements: Further lazy loading, animation optimization, and responsive adjustments will improve scalability

GRIMOIRE remains a design-first platform that combines narrative storytelling, UX experimentation, and technically disciplined engineering. The next iterations will focus on making the environment both more personal and more collaborative, while preserving the immersive and reactive nature that defines the project.

Built With

  • animationsystem
  • authentication
  • ci/cd)
  • css
  • customcursorsystem
  • eslint
  • firebase-(firestore
  • firebasehosting
  • githubactions
  • google-cloud
  • npm
  • postcss
  • prettier
  • ratelimiting
  • react
  • securitymiddleware
  • tailwind
  • texteditor
  • typescript
  • typescript)
  • vite
Share this project:

Updates