A serialized-novel reading platform and narrative world engine built with Next.js 16 (App Router) and Web Audio synthesis. Seven arcs. Sixty-three chapters. One truth, buried under twenty-seven thousand loops.
The reader begins where the protagonist awakens — an animal consciousness trapped in a subterranean core that is also its own body — and the interface itself evolves as the story deepens from dungeon-management dark fantasy into cosmic existential tragedy.
Single Curated Void Aesthetic: The platform ships with a unified, meticulously calibrated dark aesthetic. Contrast, typography, and luminance are tuned for immersive, distraction-free reading during long sessions.
- Features
- Platform Views
- Generative Audio Engine
- Interactive Secrets & Easter Eggs
- Keyboard Shortcuts
- Tech Stack
- Project Structure
- Quick Start & Local Development
- Deployment to GitHub Pages
- Architecture & Design Principles
- Contributing
- License
- 63-Chapter Manuscript — Complete prose for initial chapters and structured narrative treatment outlines across all 63 chapters.
- 7-Arc Narrative Architecture — Expandable chapter lists tagged with boss encounters, climax milestones, and temporal anchors.
- Interactive World Codex — Comprehensive 8-faction compendium, deep chronological timeline, and antagonist profiles.
- Craft & Endings Registry — Live-filtered foreshadowing index tracking story threads across all arcs alongside three terminal outcome vectors.
- Unified Command Palette (
⌘K/Ctrl+K) — High-speed fuzzy search across all sections, chapters, factions, chronology events, antagonist dossiers, and foreshadowing entries with contextual excerpts. - Customizable Reading Engine — Switch between Serif, Sans, and Monospace typography, adjust font scale, customize column widths, modify line height, and toggle distraction-free Focus Mode.
- Progress Tracking & Bookmarks — Automatic per-chapter scroll progress saving, resume-reading prompts, and mark-as-read toggles backed by
localStorage. - Native Print-to-PDF Engine — Clean print stylesheet (
@media print) that isolates prose onto pristine, readable white pages and strips all chrome. - Generative Ambient Music Synthesizer — Six real-time procedural soundscapes created directly in browser memory using the Web Audio API with zero external audio assets.
- Full Accessibility (WCAG AA) — Keyboard navigation, focus trapping, ARIA live region announcements, and reduced-motion query support.
- Zero Server Runtime — 100% static export (
output: "export") deployable to GitHub Pages, Cloudflare Pages, Netlify, or any static hosting service.
| View | Description | Key Capabilities |
|---|---|---|
| Overview | Narrative architecture and map | 7-arc structure, chapter status indicators, core stats, quick-jump links |
| Manuscript | Core reading interface | Chapter reader, progress indicator, reading settings, PDF export, prev/next chapter navigation |
| World Codex | Worldbuilding and lore archive | 8 interactive factions, chronological events timeline, antagonist dossiers |
| Craft & Endings | Writer's craft and story architecture | Foreshadowing matrix with status filters, terminal loop outcome vectors |
| Easter Eggs | Secret layers & terminal logs | Reality stability monitor, unlockable narrative logs, glyph resonance |
The built-in ambient player generates procedural audio landscapes in real time directly on the client's audio device:
| Soundscape | Narrative Alignment | Root Frequency | Harmonics & Waveform | Filter & Space |
|---|---|---|---|---|
| The Deep Blue | Submarine · Atmospheric · Arc I | 55.0 Hz (A1) |
Sine · [1, 1.5, 2, 3] |
800 Hz LPF · 35% Convolver |
| Ancient Stone | Ambient · Meditative · Arc I–II | 65.4 Hz (C2) |
Triangle · [1, 1.25, 2, 2.5, 4] |
600 Hz LPF · 45% Convolver |
| The Procession | Tense · Marching · Arc II | 49.0 Hz (G1) |
Sawtooth · [1, 1.5, 2.01, 3, 4.02] |
500 Hz LPF · Filtered Noise |
| Contradictions | Uneasy · Detuned · Arc III | 58.27 Hz (A♯1) |
Triangle · [1, 1.06, 1.5, 2.83, 4.24] |
900 Hz LPF · 15¢ Detune |
| Cosmic Drift | Cinematic · Vast · Arc V–VI | 41.2 Hz (E1) |
Sine · [1, 1.5, 2, 3, 4, 6] |
1200 Hz LPF · 60% Convolver |
| The Lullaby | Ethereal · Melancholic · Arc VII | 73.42 Hz (D2) |
Triangle · [1, 1.2, 1.5, 2, 3] |
1500 Hz LPF · Slow LFO Drift |
Oscillators (Harmonic Stack) ──► Lowpass Filters ──► LFO Modulators ──┐
▼
Noise Generator ───────────────► Noise Filter ────► Noise Gain ──► Soundscape Master Gain
│
┌────────────────────────────────────────────────────────────┴────────────────────────┐
▼ ▼
Shared Dry Send Convolver Reverb
│ │
▼ ▼
Master Output Node ◄────────────────────────────────────────────────────────────── Reverb Gain Node
│
▼
Dynamics Compressor / Limiter ──► Audio Destination (Speakers / Headphones)
The platform features multiple hidden interaction layers embedded within the interface:
- The Konami Code: Enter
↑ ↑ ↓ ↓ ← → ← → B Aanywhere on the site to trigger the Cosmic Decay overlay. - The Core Glyph: Click the header glyph icon 7 times in succession to reveal hidden protagonist memories.
- The Lullaby Resonance: Type
lullabyanywhere on the keyboard to automatically tune the procedural audio engine to Arc VII's harmonic theme. - Reality Stability Meter: Reader interactions, loop transitions, and secret discoveries dynamically adjust the systemic reality stability value.
| Shortcut | Action |
|---|---|
| ⌘ K / Ctrl K | Open Search / Command Palette |
| ⌘ . / Ctrl . | Toggle Reading Settings Drawer |
| F | Toggle Focus Mode (distraction-free reading) |
| ? / Shift / | Open Keyboard Shortcuts Cheatsheet |
| ← / → | Jump to Previous / Next Chapter (in Manuscript) |
| Esc | Dismiss overlays, drawers, and modal panels |
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack, Static Export) |
| UI Library | React 19 |
| Language | TypeScript 5 |
| Styling | Tailwind CSS 4 + PostCSS |
| State Management | Zustand 5 (with persist middleware) |
| Icons | Lucide React |
| Typography | Playfair Display, Literata, JetBrains Mono (next/font) |
| Runtime & Package Manager | Bun (compatible with Node.js ≥ 20) |
| CI / CD & Deployment | GitHub Actions + GitHub Pages |
Dungeoncore-Necromancer/
├── .github/
│ └── workflows/
│ ├── ci.yml # Lint and test static build on pull requests
│ └── deploy.yml # Automatic build and deployment to GitHub Pages
├── .vscode/ # VS Code workspace settings, tasks, and debug configs
├── public/
│ ├── .nojekyll # Prevents GitHub Pages from stripping _next assets
│ ├── art/ # Chapter artwork and visual assets
│ ├── favicon.svg # Vector site icon
│ └── site.webmanifest # Progressive web app manifest
├── src/
│ ├── app/
│ │ ├── globals.css # Tailored theme tokens, typography, and print styles
│ │ ├── layout.tsx # Root layout with font optimization and metadata
│ │ └── page.tsx # Primary application orchestrator and event hub
│ ├── components/
│ │ ├── ErrorBoundary.tsx # Application error boundary
│ │ └── dungeoncore/ # Modular reader components & views
│ │ ├── views/ # Overview, Manuscript, World, Craft, EasterEggs views
│ │ ├── Boot.tsx # Hydration boot animation and preloader
│ │ ├── CommandPalette.tsx # ⌘K fuzzy archive search
│ │ ├── MusicPlayer.tsx # Web Audio real-time DSP synthesizer
│ │ ├── SettingsPanel.tsx # Typography, scale, and layout customization
│ │ └── TopBar.tsx # Navigation header and progress indicator
│ └── lib/
│ ├── asset.ts # Base-path URL resolver for GitHub Pages subpaths
│ ├── story-data.ts # Typed manuscript data, lore codex, and chapter registry
│ └── dungeoncore/ # Zustand store, hooks, search engine, and soundscapes
├── next.config.ts # Next.js configuration (static export, base paths)
├── package.json # Dependencies and scripts
└── tsconfig.json # TypeScript compiler configuration
git clone https://github.com/Pushyanth02/Dungeoncore-Necromancer.git
cd Dungeoncore-NecromancerUsing Bun (recommended):
bun installUsing npm:
npm installbun run dev
# or: npm run devOpen http://localhost:3000 in your browser.
# Run ESLint check
bun run lint
# Build static production export into `out/`
bun run buildThis project is configured for automated, zero-configuration static deployment to GitHub Pages via GitHub Actions.
- When changes are pushed to the
mainbranch,.github/workflows/deploy.ymltriggers automatically. - The workflow installs dependencies via Bun, executes
actions/configure-pages@v5to determine the repository base path, and runsbun run build. - Next.js statically exports the application to the
out/directory withoutput: "export". - A
.nojekyllfile is verified inout/so GitHub Pages serves_next/static bundles without interference. - The
out/artifact is uploaded and deployed to GitHub Pages.
- On GitHub, navigate to your repository's Settings tab.
- Under Code and automation, click Pages.
- Under Build and deployment > Source, select GitHub Actions.
- Push to
mainor manually trigger the Deploy to GitHub Pages workflow under the Actions tab.
- Hydration Safety: State persistence uses Zustand with
skipHydration: true. An explicitrehydrate()runs on mount while theBootcomponent prevents flash of unstyled content or hydration mismatch. - Zero Asset Audio: Ambient audio relies completely on Web Audio oscillators, biquad filters, and procedural impulse responses, keeping bundle size minimal and avoiding external asset network requests.
- Isolated Asset Resolution: All static asset references pass through
asset(path)fromsrc/lib/asset.ts, which automatically handles root-domain deployments as well as subpath-hosted GitHub Pages (https://<user>.github.io/<repo>/). - Separation of Concerns: Narrative prose, character codex, chronology data, and system settings exist as pure typed data models in
src/lib/story-data.ts, decoupled from React presentation components.
Contributions, bug reports, and suggestions are welcome! Please check .github/CONTRIBUTING.md for contribution guidelines, branch conventions, and development workflows.
This project is open source and available under the MIT License.