type: decision
status: active
timestamp: 2026-06-21
tags: [decision, app, ncert, pdf, education, india, gh-releases]

ncert-app scope — merge per-chapter NCERT PDFs into one-per-book, all classes, EN + HI

ncert.oriz.in catalogs all NCERT textbooks (Pre-Primary + 1-12) \ all subjects, English + Hindi. Daily GH Action URL-merges per-chapter PDFs from\ \ ncert.nic.in into one PDF per book using qpdf/pdftk, publishes as GH Release artefacts\ \ (NOT CF Pages \u2014 25MB limit). Catalog UI shows class/subject grid \u2192 download\ \ links."

ncert-app scope

What it does

Catalogs every NCERT-published textbook, automates the “I just want the whole book as one PDF” workflow.

NCERT publishes per-chapter PDFs on ncert.nic.in. Students perpetually want one-PDF-per-book. This app produces and hosts that artefact.

Pipeline

  1. GH Action (daily 04:00 IST) walks the NCERT URL tree.
  2. Downloads every chapter PDF per {class, subject, language} triple.
  3. Merges via qpdf --empty --pages a.pdf b.pdf c.pdf -- merged.pdf (or pdftk fallback).
  4. Names output {class}-{subject}-{en|hi}.pdf — e.g. class-9-science-en.pdf, class-11-physics-hi.pdf.
  5. Publishes as GitHub Release artefacts under tag ncert-YYYY-MM-DD. NOT CF Pages — CF Pages has a 25 MB per-file limit; merged textbooks routinely exceed.

Scope

Catalog UI at ncert.oriz.in

Why GH Releases not CF Pages

CF Pages = 25 MB per asset. Merged Class 11 Physics in Hindi alone = ~80 MB. GH Releases = 2 GB per asset, unlimited download bandwidth, free for public repos. Compliant with [[rules/cloudflare-pages-only]] for the CATALOG (which IS on CF Pages); the storage for large binaries follows the existing rule in [[decisions/database/object-storage-split]].

Monetisation

Free + sponsor footer per family default. No ads on an education resource serving students.

Cross-refs


Edit on GitHub · Back to index