ImmersivePage Admin Console
Operator tools for accounts, plans, billing recovery, and global announcements.
Requires DOCUMENTREADER_ADMIN_SECRET in production (local dev allows access without it).
Search for a user and select them from the list to view details and manage their account.
User detail
Plan & trial
Account edits
Broadcast banner
Shown to all signed-in users at the top of the app. Dismissible per browser when enabled.
Cache Status
Live TTS warm queue across Listen and catalog jobs. Full-book Listen warms are durable on the server (they keep running if you leave the book, and resume after Docker restart). Job % is the active build; Book cached % is cumulative / on-disk progress. Rows marked On disk appear when audio is partially cached with no live job yet.
| Story | Status | Job | Book cached | Detail | Actions |
|---|---|---|---|---|---|
| Open this tab to load the queue. | |||||
Resource monitor
Poll host memory, CPU/load, disk, Docker container stats, and recent API clients. Off by default so it does not add load while you are not watching. Use Remote production to sample the Catalog Deploy SSH target, or This admin host for the machine serving this Admin UI.
Normal Elevated High Critical
Recent API clients (last ~2 min)
| IP | Device | User | Last path | Seen |
|---|
Recent container logs (fallback traffic view)
Preparing load test…
- Started
- 0
- Active
- 0
- Completed
- 0
- Failed
- 0
App code
Push this machine’s working code to the server over SSH, then recreate the Docker
container. Use this when you do not have a remote git repository.
Large folders (TTS models, node_modules) are excluded automatically.
- Target
- —
- Host
- —
- Repo on server
- —
- Local source
- —
- Remote git
- —
Configured paths
Production users
Search accounts on the production server and grant or revoke Admin console
access. Changes are written to the server workspace _entitlements.json over SSH.
Users listed in DOCUMENTREADER_ADMIN_CONSOLE_EMAILS stay admins until removed from
that env file.
Search for a user on the production server, then select them to manage admin access.
Production user
Production settings
Update selected values in the server's deploy/.env.staging file over SSH.
After saving, the production app container is recreated so new values take effect.
- Admin secret
- —
- Env file
deploy/.env.stagingon the production server
Backup production
Archives the server workspace (accounts, entitlements, user libraries, uploads, and listen progress) and downloads it to operator storage on this machine. TTS audio cache is excluded by default — it can be regenerated.
Catalog cache deployment
Bulk-create TTS cache locally, then deploy cache and listen-batch fixtures to production for one store grouping at a time (Featured stories, Grimm Fairy Tales, Spanish twins, etc.).
Current story
Enhanced Stories
Edit curated packs in draft, then publish to the store shelf. Drafts live in content-packs/.drafts/.
| Push | Cover | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||||
Store defaults
Default pack and voice engine for every Enhanced Story you sell. Per-pack overrides are in each pack’s Overview tab.
Global pronunciations
Default dictionary applied to every book and Enhanced Story. Per-story pack dictionaries and listener overrides still take precedence for the same word.
Voice rankings
Rank voices per engine (1 = best). Story import and Apply best voices prefer lower ranks when auto-casting. Listeners can set their own rankings in Settings.
Bulk import
Drop story files into content-packs/_imports/stories/ (or another folder inside this repo),
then process them into published, sellable Enhanced Stories — full wizard pipeline, no manual library upload.
Drop files here
Story files (.txt, .doc, .docx, .epub, .pdf, …) plus one shared
generic.pack.json (sourceNote, rights, price, environment for all).
Title and pack id come from each file name. Optional per-story .pack.json overrides.
or ·
Supported: .doc, .docx, .epub, .pdf, .txt. .doc uses Word or LibreOffice on the server.
Content pack editor
Manifest
Store listing, preview cutoff, voice engine, and Stripe configuration.
TTS cache
Local listen-batch fixtures and warmed audio for deploy. Timing from the last successful bulk or per-book cache job on this machine.
Narrator & cast
Open the full Cast editor (voice preview, gender/age, merge). Saves to this pack’s draft — publish when ready.
| ID | Display name | Voice | Pan | Pitch | Rate | FX | FX Amt |
|---|
Playback segments
Dialogue and narration lines. Drag the handle to reorder. Right-click a row for segment actions — link segment images, add format-override image pages, set Listen start, split a source block index, and more. Prefer fixing huge Minimal pages from Listen (Admin): right-click mid-page → Split Block. To undo a sparse split or join two short pages, right-click → Combine With Next Page. Drop an image file onto a segment row to upload it and create a linked segment image. Green outline marks the Listen start segment. Colored bars and page labels show Format Override pages — click a page label to open that page in Format Overrides. Use Split Large Blocks to auto-split oversized blocks (~780 chars). Chapter headers come from the book structure. Use Search segments to find text. Editing segment text on a page with custom format overrides prompts to sync those overrides. Use Combine fragments to merge Gutenberg-style line-wrap splits into paragraphs. Use Overwrite Source Text to replace the Source manuscript with the current segment texts.
| # | Kind | Speaker | Text | Director (JSON) |
|---|
Segment images
Assign images to segment ranges (companion page in Cinema). Start/End use the same segment numbers shown during playback (Segment 1 = first segment). Row order is for organization only — drag the handle to sort visually.
Cover every segment. In Book View with Standard (dialog) playback, segment image ranges should be contiguous and include all segments (0 through the last). Gaps between ranges can cause missing illustrations and playback sync issues. Use no segment images at all if you want two-page text spreads only.
| ID | Title | Start seg | End seg | Image | Preview |
|---|
Format Overrides
Fine-tune Full paragraph pages. Use this only for minor formatting: add/remove line breaks, join lines, or inline emphasis. Do not delete, rewrite, or reorder segment text. After adding or splitting segments, use Regenerate pages to refresh pagination — saved overrides are merged back by segment range.
Inline formatting tags (Listen)
Immersion sounds
Pack assets
Upload images into assets/ on the draft pack.
Drag images here
or choose files — PNG, JPEG, WebP, SVG, GIF. Multiple files OK.
Pack pronunciation
Default dictionary for this story only. For words that should apply to every book (e.g. breathed → brethed), use on the Content packs list.
Source manuscript
Manuscript used to rebuild playback segments. Fix joins Gutenberg-style mid-sentence line wraps; Re-Process recreates segments from this text.