Values stored in DB override .env. Secrets are encrypted at rest with SETTINGS_KEY.
Content
Inventory of corpus, detailed companions, and audio coverage per course. Reflects the live filesystem on every load.
Audio narration
Generate, review, and approve per-lesson narration via ElevenLabs. Approved files are what the PWA serves.
Generate new audio
Generating audio
ElevenLabs API key isn't set - generation requires it.
SSML script
Batch generation
0 selected
Inline illustrations
Analyzes each lesson and proposes editorial still-life images at the
spots where they'll do real psychological work — regulation, anchoring,
pivot marking, or repair. Review prompts, pick a model, generate, approve.
Approved images appear inline in the lesson on the next reader load.
Loading…
Batch generate images— pick a model below to fill every draft suggestion in one click.
User-redeemable codes typed at checkout. One code per redemption; percent / amount / free-period rules; optional plan + audience + window. Counter ticks on Stripe webhook confirmation.
Code
Name
Kind
Value
Plan
Audience
Used
Window
Status
Actions
Discount campaigns
Auto-apply rules — no code typed by the user. Match by audience + plan + time window; best discount wins. Useful for "first-month free for new signups" or "holiday sale".
Name
Kind
Value
Plan
Audience
Used
Window
Status
Actions
Access codes & grants
For subscribers who want no email-linked account. Provision a code + initial PIN, communicate them out-of-band (the PIN is shown once), and grant a subscription window. PINs lock for 15 min after 5 failed attempts.
Active grants
Access code
Plan
Granted
Expires
Payment
Amount
Status
Actions
Refund queue
User-submitted refund requests. Approve, deny, or mark refunded — each action audits + emails the user. Idempotency-keyed so double-clicks won't duplicate emails or audit entries.
Requested
Email
Reason
Status
Actions
Course R&D
Proposal → outline → corpus → review → approve → publish. The publish step writes content files and registers the course in catalog.json; the course goes live in /courses immediately.
Slug
Title
Status
Updated
Actions
How the pipeline works
Draft — create a proposal with slug, title, tagline, description, target segments.
Outline — generate (or paste) the 6-volume / 30-lesson outline JSON via the AI orchestration pipeline.
Drafting → drafted — attach the full corpus (lesson hooks, frames, stories, takeaways, quizzes, challenges) and the wisdom items.
Published — content files written, catalog updated. Live in /courses.
Rejected — declined with a reason. Can be deleted or duplicated.
Endpoints: POST /api/admin/course-proposals, PUT /api/admin/course-proposals/:id, POST /:id/approve, POST /:id/reject, POST /:id/publish.
Detailed companion essays
Per-lesson long-form essays (SCENE 1 → [Annotation] → SCENE 2 → [Annotation], 700-1100 words). Generated with an iterative refine loop — initial draft, then critique-and-rewrite passes until the quality score crosses the threshold or 5 iterations elapse. Safe-exit keeps the best version produced.
Course
Lessons
Detailed
Coverage
Actions
Promote
Generate catchy, subscribe-driving posts built from real course content, then schedule and publish per platform.
Drafts
Queue & schedule
Monitor
Connections
Add tokens under Settings → Social to enable auto-publish. Unconnected platforms still generate + schedule; you copy/export and post manually.
Download data and bundles. CSV/JSON for spreadsheets & analysis. Zip bundles for migration or off-site backup.
Backup password
Required before any backup download. The same password unlocks the encrypted file (AES-256-GCM, PBKDF2). It's stored as a salted hash - there is no recovery. Forgetting it means setting a new one and re-downloading.
Status:checking…
Full backup
SQLite snapshot + content + audio + settings, in a single zip. Use this to migrate to another server or store off-site. The downloaded file is AES-256-GCM encrypted with your backup password - file extension .zip.enc. Decrypt with tools/dev/decrypt_backup.sh.
⚠ Plaintext secrets will be included in the encrypted file. The encryption protects them in transit and at rest; whoever has the password can read them.
⚠ Set a backup password above before downloading.
Content bundle
All lessons, wisdom encyclopedia, checklists, legal docs.