Study tooling

CramForge

A local-first Next.js starter that imports owned books, exposes chapter content, and creates Markdown study packs without bundling private books or locking users to one model provider.

CramForge local-first study library home screen
The empty, local-first study library before a user imports a book.

The problem

I wanted a reusable study workspace for books I own without checking copyrighted source material into a public repository or requiring one AI provider.

What I built

  • Built an EPUB import workflow that creates a local catalog and chapter reader.
  • Generated a predictable Markdown study-pack structure for summaries, flashcards, quizzes, cram notes, and agent instructions.
  • Kept the starter empty so other people can add only material they have the right to use.

Key decisions

  • Treat Markdown as the handoff format between the reader, the user, and whichever coding agent or model they choose.
  • Store imported source material locally instead of shipping books with the repository.
  • Separate import scripts, reader routes, book assets, and generated study materials so each part can be replaced independently.

How I check the work

  • Run the production build and lint checks.
  • Import a DRM-free EPUB and confirm its manifest, chapters, assets, and study-pack files are created.
  • Open the imported book in the chapter reader and confirm the generated Markdown can be used outside the app.