~/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.

Creator Side project
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.

bash
$ 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.

sql
 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.

Source PDF Extraction ETL SQL Store Payload CMS Next.js Reader RN App
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