Open source · self-hostable · personal-tool-first

Libra turns books into character-aware audio experiences.

This repo is the TypeScript rebuild: Next.js for the app, Convex for realtime state, Trigger.dev for long-running orchestration, and R2 for source files and generated audio.

Next.jsConvexTrigger.devCloudflare R2

First vertical slice

A Christmas Caroluploaded
  • 1Upload a book
  • 2Discover the cast
  • 3Assign voices
  • 4Generate the aura
  • 5Play it back

Source of truth

Convex will own books, characters, auras, jobs, and script-line state. R2 holds the blobs.

Workflow engine

Trigger.dev will drive discovery, scripting, audio generation, retries, and progress updates.

OSS stance

Personal tool first. Hosted demos later. If someone wants to self-host Libra, the repo should make that realistic.

Upload prep slice

Prepare a source upload

This is the first real boundary in the rebuild: collect actual book metadata, validate the upload, persist state, and hand discovery to the workflow runner when configured.

No upload prepared yet.

Books state

Current book records

The slice now surfaces persisted books, their latest discovery job, and any discovered characters already written back into Convex.

Loading books…