Local-first

Why CramForge keeps books and study material local

CramForge is a study-app starter for DRM-free EPUBs. The public repository ships empty because a reusable tool should not bundle someone else’s books, private notes, or a required AI provider.

The import boundary

An import creates the reader content and a predictable Markdown workspace:

study-materials/<book-slug>/
  README.md
  chapters/chNN.md
  study-guide.md
  agent-instructions.md

The reader handles the book. Markdown handles the handoff to summaries, flashcards, quizzes, cram notes, or any other study format.

Why Markdown

Markdown keeps the study material portable. A user can edit it directly, version it, or hand it to the coding agent or model they already use. The project does not need to own that relationship.

What I check

The useful path is an actual import: run the build and lint checks, import a book the user has the right to use, confirm its chapter and asset output, open it in the reader, and inspect the generated study-pack files outside the app.

View CramForge on GitHub ↗