~/projects/biblija-nsp $ cat case-study.md
CASE STUDY — 08
Biblija NSP — Bible Reading App
A modern Serbian Bible translation existed only as a PDF. I turned it into structured data and built reading, highlighting, and search across web and mobile.
Next.jsPayload CMSReact NativeSQL
01 — The Problem
A whole translation trapped in a PDF
The NSP translation existed only as a typeset PDF — unreadable on phones, unsearchable, unlinkable. No structured source existed anywhere.
$ python extract.py biblija-nsp.pdf
parsing 1,400 pages…
detected: 66 books, 1,189 chapters
verses extracted: 31,102
writing books/*.json
02 — The Approach
PDF → JSON → SQL, then build on clean data
I scraped the PDF, repaired the structure (verse numbers, poetry indentation, footnotes), and normalized it into JSON split by book, chapter, and verse — then loaded it into SQL as the single source of truth for both apps.
1CREATE TABLE verses ( 2 book_id smallint REFERENCES books(id), 3 chapter smallint NOT NULL, 4 verse smallint NOT NULL, 5 text text NOT NULL, 6 PRIMARY KEY (book_id, chapter, verse) 7); 8-- full-text search across the whole canon 9CREATE INDEX verses_fts ON verses10 USING gin(to_tsvector('simple', text)); 03 — The Architecture
One content backend, two reading apps
Payload CMS manages the structured text; a Next.js web reader and a React Native app consume it with reading positions, highlights, and search.
04 — The Results
A translation people can finally use
Placeholder: add reader counts, App Store presence, or community response.
0+
verses extracted & structured
0
books parsed from one PDF
0
platforms: web + mobile