Inspiration
We have always been fascinated by how objects can hold memories, photographs, diaries, voice notes, old cassette tapes. When we thought about vinyl records spinning memories from the dead, it unlocked the core idea: What if your private thoughts didn’t fade away… what if they stayed behind waiting for you? I wanted to mix comfort and terror, journaling as a safe space vs. the supernatural idea that someone else might be listening. That contrast became the spark for Haunted Vinyl Diary. It grew into a love letter to: 1 Retro horror aesthetics
- Old music formats
- Interactive haunted house experiences 4.The intimacy of confessing feelings into a microphone
What it does
Requiem Records is a voice journaling app wrapped inside a horror experience. Users record memories, secrets, and stories, and the app transforms them into diary with spooky story. As they continue recording, we can use the telephone for the Séance Room, where unique ghosts can be summoned through ritual-style actions, and then too bored then you can just chill in the vinyl room and listen to horror music
The app features:
- Voice journaling stored as playable vinyl entries
- An interactive séance summoning system
- fully illustrated ghost encounters with danger levels
- Timeout mechanics that escalate visual + audio horror
- Vinyl spinning music interface with 10 atmospheric tracks
- Auto-generated scary stories from user recordings
- A cinematic UI with glitch, distortion, and screen shake effects It’s part journaling app, part horror game — and 100% immersive.
How we built it
The application is built fully client-side using HTML, CSS, and vanilla JavaScript, structured using service-based architecture.
Key components: UI Manager — state transitions & DOM orchestration Media Manager — handles audio/video playback Recording Service — microphone capture & waveform display Storage Service — Base64 persistence in localStorage Séance Service — ghost logic, probability system, danger level escalation Story & Song Services — generate audio/visual spooky content
Technical highlights:
- Property-based testing (fast-check) to validate storage + transitions
- Jest unit tests for error handling and permission workflows
- Custom CSS animation system (glitch, shake, blur, chromatic shift)
- No backend is required, the entire horror experience runs locally in the browser.
Challenges we ran into
Microphone permission flow - Browsers block autoplay + complex async,Async pipeline + visual permission tutorial Web Speech limitations - Can’t transcribe pre-recorded audio,Replaced with horror-style placeholder text Audio storage -Audio blobs are large, Base64 encoding + quota monitoring Séance timeout - Needed perfectly timed multi-sensory escalation,Chained CSS effects + layered soundscape timing Browser differences - Autoplay + API compatibility Progressive fallback media & graceful degradation
Accomplishments that we're proud of
Built a full cinematic horror interface using only web tech — no engines, no frameworks Designed 11 ghost encounters with original lore, art, and ritual summoning Created a unique hybrid: voice journaling × haunted house simulation Implemented property-based testing for a spooky app, unusual but extremely valuable Ran entirely offlinee, all audio, video, and logic is stored locally Delivered a project where UI, sound, and story are inseparable
The biggest accomplishment: The app feels alive, the interface itself becomes the antagonist.
What we learned
- This project stretched both software and storytelling skills:
- How to convert a creative concept into formal requirements
- How property-based testing reveals bugs human testers never consider
- How to design for fear using UI/UX — audio cues, pacing, uncertainty
- The value of spec-driven development for core logic and vibe coding for polish
- Performance-safe strategies for audio + video heavy web apps Most importantly: Horror isn’t just about jump scares, it’s about debugging.
What's next for Requiem Records
We planned to add a old tv room soon... Nobody knows where the creepy footage came from so its a mystery like always
Log in or sign up for Devpost to join the conversation.