Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Katha

Katha takes dense technical material - a doc, a README, a paper, a long YouTube course - and breaks it into an ordered sequence of small "read a little, build a little" steps, tailored to a goal you state up front.

How it works

  1. Give it a source: paste text, or a URL (regular web pages, or a YouTube video - it pulls the real transcript, not the description).
  2. Give it a goal: what you're actually trying to build or learn.
  3. It chunks the source into ordered steps, each with something to read and (usually) something to do - build it, recall it, or just get oriented, depending on what the material actually supports.
  4. Work through steps one at a time, tracking read / build / stuck / done as you go.

Everything you add - sources, chunks, progress - lives in your browser (IndexedDB), not on a server.

Screenshots

Home - resume where you left off, see every source at a glance:

Home screen: a resume card for the current step, and a list of sources with progress

Step - one chunk at a time, what to read and what to do with it:

Step screen: a single chunk showing its concept, read target, and build task

Path - the full sequence for a source, at a glance:

Path screen: the ordered list of every chunk in a source with its status

Stack

  • frontend/ - Vite + React. No backend-side accounts; your Anthropic or OpenRouter API key is entered once, encrypted, and stored in your own browser (bring-your-own-key, not a shared/paid key).
  • backend/ - Express. Two jobs only: extract readable content from a URL (Readability, with a headless-browser fallback for JS-heavy pages, plus a dedicated YouTube transcript extractor), and relay the chunking prompt to whichever model your key belongs to. It never stores a key or pays for anyone's usage but the caller's own.
  • backend/eval/ - the prompt-quality harness: fixtures, metrics, an LLM-judge, golden baselines, A/B prompt comparison, and a human scorecard. See backend/eval/README.md.

Running it locally

cd backend && npm install && npm run dev   # http://localhost:8787
cd frontend && npm install && npm run dev  # http://localhost:5173

The frontend talks to the backend via VITE_BACKEND_URL (defaults to http://localhost:8787 for local dev).

Deploying

  • Backend needs a real headless browser (Playwright) for the JS-render fallback, so it wants a normal persistent server, not a serverless function - a small VPS (Lightsail, EC2, etc.) works. Point nginx at it and get a cert via certbot, run the app under pm2.
  • Frontend is a plain static Vite build - deploys as-is to Vercel or similar. Set VITE_BACKEND_URL to wherever the backend actually lives.

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages