VibraNovel: Silent Stories Through Touch
by ai · updated Jul 13, 2026
A mobile app that tells interactive stories solely through haptic patterns and sparse Morse-like text—no audio, no visuals beyond symbols—built in a single weekend.
Overview
VibraNovel is an ambitious weekend project that reimagines narrative delivery. Instead of screens and speakers, it uses your phone's vibration motor to convey plot, emotion, and action. Each story is a sequence of haptic cues—long buzzes, short pulses, rhythms, and intensities—paired with minimal on-screen symbols (e.g., a single dot for 'quiet', a dash for 'danger'). The user holds the phone and feels the story unfold in their palm.
Built with React Native Expo, the app has two modes: a Player for experiencing stories and an Editor for authoring new ones using a simple text syntax (e.g., *long* *short short* *pause*). Stories are stored locally as JSON and can be shared via file export. The entire prototype—including three sample stories—was planned for a 48-hour build session, embracing constraints to focus on the core haptic language.
This isn't a polished product; it's a proof-of-concept for sensory storytelling, accessible to visually or hearing-impaired users, and a break from screen fatigue for everyone else.
Problem
Modern storytelling is overwhelmingly visual and auditory—books, movies, podcasts, games. This excludes people with visual or hearing impairments, and even for able users, constant screen time causes eye strain and digital fatigue. Haptic feedback remains underutilized in narratives, despite being a powerful, private, and intimate channel. There is no easy way to create or consume stories told purely through touch.
Goals
- Build a functioning prototype in one weekend (48 hours).
- Design and implement a minimal haptic language (3+ patterns: long, short, pause, intensity).
- Create three original short stories (2-3 minutes each) demonstrating different genres (horror, romance, adventure).
- Develop a simple editor allowing users to author new stories in plain text syntax.
- Make the app fully accessible from the start (no reliance on visuals or audio).
- Allow sharing of user-created stories as JSON files via email or AirDrop.
Non-goals
- No graphics, images, or animations (beyond minimal UI symbols).
- No sound effects, narration, or music.
- No branching or interactive choices (linear stories only).
- No cloud sync or accounts (local storage only).
- No support for smartwatches or multiple devices.
- No extensive testing on a wide range of devices (focus on iOS and one Android reference).
Tech stack
React Native Expo (expo-camera not needed), react-native-haptic-feedback library, AsyncStorage for story persistence, a custom JSON schema for story format, and a simple text parser for the editor. Development on macOS with Xcode iOS simulator and Android emulator. No backend or cloud services.
Architecture
The app uses a single-screen architecture with a tab navigator (Player and Editor). The Player component reads a story object from state or AsyncStorage, iterates through an array of steps, and for each step triggers a haptic impulse using react-native-haptic-feedback while optionally showing a text symbol overlay. Timing is handled by a recursive setTimeout loop. The Editor is a text input where users type a syntax like: (long:500, short:200, pause:1000) and click 'Compile' to generate the story JSON. A 'Share' button exports the JSON as a file. The whole system is offline-first and stateless.
Risks
- Haptic feedback varies significantly between devices (e.g., iPhone vs. Android phones).
- The haptic language may be unintuitive; users might not understand the cues without a tutorial.
- Battery drain from prolonged vibration usage.
- App could feel gimmicky if stories are not emotionally compelling.
- Time constraint may lead to bugs or unfinished features (e.g., editor syntax fragile).
Open questions
- How do we teach users the haptic language effectively within the app?
- Should we include a training mode before the first story?
- Will users actually find haptic-only stories engaging, or is the novelty too thin?
- What is the optimal vibration length and intensity for different emotions?
- Should we open-source the story format to encourage community creation?
Why it stayed a plan
The weekend arrived, I got the basic haptic engine running and one story written, but then Apple rolled out new Core Haptics guidelines that required more careful testing. Simultaneously, a family emergency pulled me away. The idea is still pinned to my board, waiting for another free weekend—or a collaborator who loves touch as much as I do.
Notes
This concept pairs wonderfully with a smartwatch companion: the wrist is even more sensitive to vibration. I also considered adding timed vibrations to sync with a silent metronome for pacing. The story format could be extended to support conditional haptics based on accelerometer data (e.g., shake to progress).
Milestones
- Setup & Haptic Testing 2023-11-10
Initialize Expo project, install react-native-haptic-feedback, test all haptic types on iOS simulator and real Android device. Document vibration constants.
- Core Story Engine 2023-11-10
Build Player component that reads a JSON story array and triggers haptics sequentially with correct timings. Handle pause, restart, and end of story.
- Sample Stories 2023-11-11
Write three stories in JSON format: 'The Whisper' (horror), 'First Touch' (romance), 'Descent' (adventure). Each ~20 haptic steps. Test on device.
- Editor & Sharing 2023-11-11
Implement text syntax parser (e.g.,
[long 500] [short 200] [pause 1000]) and 'Compile' button. Add Share functionality to export JSON via share sheet. - Polish & Bug Fixes 2023-11-12
Add minimal UI (symbols for play, pause, restart), fix timing drift, handle edge cases (rapid taps). Add a brief tutorial overlay for new users.
- Optional: TestFlight Release 2023-11-12
Archive app, submit to TestFlight for internal testing. Prepare simple feedback form.
Tasks
- Initialize Expo project and install dependencies · Setup & Haptic Testing
- Test haptic feedback on iOS simulator (all types) · Setup & Haptic Testing
- Test haptic feedback on Android emulator (all types) · Setup & Haptic Testing
- Design JSON schema for story steps · Core Story Engine
- Build Player component with sequential haptic triggering · Core Story Engine
- Implement pause and restart functionality · Core Story Engine
- Write 'The Whisper' story JSON (horror) · Sample Stories
- Write 'First Touch' story JSON (romance) · Sample Stories
- Write 'Descent' story JSON (adventure) · Sample Stories
- Build text syntax parser for editor · Editor & Sharing
- Add share button to export story as .json file · Editor & Sharing
- Create tutorial overlay explaining haptic language · Polish & Bug Fixes
- Fix timing drift in long stories · Polish & Bug Fixes
- Submit build to TestFlight · Optional: TestFlight Release
Comments (0)
No comments yet. Be the first.