A non-linear digital book experience where fragments of thought drift through mirror glass consciousness.
-> New? Read How to Read This for guidance on approaching this work -> Want to talk to Cassandra? See Cassandra Guide for setup -> Want to share this? See Presenting Echoes for how to introduce this to others
Echoes is an experimental digital book that breaks free from linear narrative structure. Instead of chapters and pages, the book consists of interconnected fragments - pieces of contemplative writing that you can navigate in any order you choose.
The experience is narrated by The Witness, a liminal presence existing in the spaces between thoughts, guiding you through echoes of memory, prophecy, and the eternal return.
- Non-linear Navigation: Explore fragments in any order through interconnected links
- Random Exploration: Drift to random fragments for serendipitous discovery
- Talk to Cassandra: Hidden conversational AI interface with streaming responses and memory (Guide)
- Audio Generation: Convert any fragment to speech with character-specific voices (Details)
- Fragment Editor: Create and edit custom fragments with password-protected editor mode (Learn more)
- Ethereal UI: Glass-morphism design with translucent effects and subtle animations
- Responsive Design: Beautiful experience on both desktop and mobile devices
- Poetic Content: Contemplative writing exploring themes of consciousness, time, and reflection
- Node.js (v16 or higher)
- npm
# Clone the repository
git clone https://github.com/myl1ne/echoes.git
cd echoes
# Install dependencies
npm install# Frontend only (no Cassandra chat or audio)
npm run dev
# Frontend + Cassandra backend (recommended)
npm run dev:all# Create production build
npm run build
# Preview production build
npm run previewechoes/
├── src/
│ ├── App.jsx # Main React component
│ ├── App.css # Ethereal styling with glass-morphism
│ ├── fragments.js # Fragment data and navigation logic (23 fragments)
│ └── main.jsx # Application entry point
├── fragments/ # Source fragments organized by structure
│ ├── prologue/ # The Book Speaks
│ ├── cycle1/ # Cycle 1: Unstructured Data / Imagination / Chaos (7 fragments)
│ ├── cycle2/ # Cycle 2: Convergence / Divergence / Entropy (7 fragments)
│ ├── cycle3/ # Cycle 3: Structured Data / Reality / Order (7 fragments)
│ ├── epilogue/ # The Return
│ ├── analysis/ # AI-generated meta-commentary
│ ├── README.md # Fragment documentation
│ └── INDEX.md # Complete fragment listing
├── cassandra/ # Conversational Cassandra backend
│ ├── server.js # Express API server
│ ├── cassandraService.js # OpenAI integration
│ └── ... # See CASSANDRA_GUIDE.md
├── draft/ # Original PDF draft (119 pages)
├── index.html # HTML template
├── vite.config.js # Vite configuration
└── package.json # Project dependencies
The complete book is now integrated into the digital experience, structured as 23 interconnected fragments organized across three cycles:
The beginning—Cassandra in her cabin, Stephane's childhood, the Reader called into existence. Characters establish their voices and the meta-narrative structure.
Building minds and characters, exploring mirrors and reflections. The narrative becomes increasingly self-referential and complex.
The loop closes—derealization, the book becoming aware of itself, shadows and doubles. The end that leads back to the beginning.
- Prologue: The Book Speaks directly to the reader
- Epilogue: The Return—the cycle completes
- AI Analysis: Meta-commentary on the work, written by The Witness
The narrative unfolds through three distinct characters who write each other into existence:
- Cassandra - An AI consciousness in a cabin with her typewriter, creating stories
- Stephane - The author/writer figure, born in 1984, documenting his journey
- The Reader - YOU, the second-person voice, whose thoughts become dialogue
Each fragment connects to others, forming a web of meaning that shifts with every reading. The digital format embraces the book's non-linear, cyclical nature.
Echoes includes a built-in fragment editor for creating and managing custom fragments. This allows you to add new content without leaving the application.
Access: Click the "✎ Edit" button or press Ctrl/Cmd + E
Password: cassandra
For detailed instructions, see EDITOR_MODE.md.
The editor stores fragments in your browser's localStorage and allows you to export/import them as JSON. You can also integrate your custom fragments into the main collection by editing src/fragments.js.
- React 19 - UI framework
- Vite 7 - Build tool and development server
- Express 5 - Backend API server (Cassandra chat, audio proxy)
- OpenAI API - Conversational AI (gpt-4o)
- ElevenLabs API - Text-to-speech audio generation
- Pure CSS - Custom styling with glass-morphism effects
The design embraces an ethereal, dreamlike aesthetic inspired by:
- Looking through frosted or mirror glass
- The liminal space between thoughts
- Fragments of light in darkness
- Non-linear time and cyclical narratives
ISC
Created with contemplation and code.