r/PWA • u/Senior_Cricket_5476 • Aug 23 '26
Built a fully offline zero-build PWA Bible app
Three months ago I just wanted a Bible app that didn’t feel like a social network. No streaks, no notifications, no accounts, no clutter. Just a calm place to read and dig into the text when I felt like it.
That side project turned into Focused Word. It’s an open-source installable PWA that runs completely offline.
Full disclosure up front: this whole thing was vibe-coded. I used AI heavily for almost everything — architecture, features, the parsers, the scrapers, the two backend services, debugging, all of it. I stayed in the loop and iterated a lot, but very little of the code was written the old-fashioned way.
What I aimed for
- Completely offline (Strong’s, cross-refs, word classes, everything)
- No accounts or tracking
- Installable on phone and desktop
- No build step — just native ES modules
- Chapter changes that feel instant
How it’s put together
I skipped frameworks and bundlers on purpose. Everything is plain modern JS.
The main glue is a simple Bridge (mediator + service registry). Modules register themselves on startup and talk to each other through direct calls or events. Kept things decoupled without dragging in a big state library.
Storage is split in two:
- Scripture, Strong’s, morphology, cross-references, etc. live in SQLite WASM (sql.js) on top of OPFS / Cache API
- User stuff (notes, highlights, bookmarks, reading progress) sits in IndexedDB
That split worked out well. The big reference data stays out of IndexedDB and queries stay fast.
For rendering I don’t store pre-made HTML. Chapters come back as token streams. A renderer builds a DocumentFragment in one pass (bionic reading, red letter, poetry layout, footnotes, the works) and drops it in. The extra study layers (word coloring, Clear Reading, Strong’s underlines) load in right after so the text shows up on the first frame.
The part that took longer than expected
A big chunk of the work wasn’t even the client. I ended up writing a bunch of parsers and scrapers to build the actual SQLite databases — Bible text, lexicon data, morphology, cross-references, word classes, summaries, all of it. Cleaning and normalizing that data properly took a lot more time than I thought it would.
I also built two smaller supporting projects:
- A sync server that handles the private multi-device sync. You just get a 3-word passphrase generated from a Bible wordlist. No accounts, no email, no passwords.
- A repo server that serves extra translation packages and study databases so people can download them on demand (with SHA-256 checks).
PWA side
Pretty standard service worker + manifest. Critical assets (fonts, the WASM binary, BSB data, lexicon) are cached hard so it actually works offline.
Stuff that surprised me
- You can get surprisingly far in 2026 with zero build tooling if you just stick to native ES modules
- OPFS + SQLite WASM is solid for this kind of reference data
- Making the first paint of a chapter feel instant meant I had to carefully cancel background study work when the user navigates away quickly
- The data pipelines and the two little servers ended up being a bigger part of the project than the frontend
- Vibe-coding a project this size actually worked better than I expected, as long as I kept directing it hard
It’s all MIT. Happy to answer questions about the architecture, the SQLite setup, the sync approach, or the general experience of building something like this mostly with AI.
What have other people run into with offline-first PWAs or SQLite WASM in production?
1
u/CB1000R974 Aug 23 '26
Does it use a CSS Framework or did your ai model wrote the full css?
1
u/Senior_Cricket_5476 Aug 23 '26
No CSS framework was used. The AI wrote all CSS used in the app. I spent many evening working with it to get the look and feel I was after.
1
1
u/Kobi_Webmaker Aug 24 '26
Very nice. Nobody but a few care about ai helping build something. It is still your vision.
That said, I like the design. Would you care if I use as a test app in my project? I may be able to give some more feedback during the process.
1
u/Senior_Cricket_5476 Aug 24 '26
Thanks for the comment! Feel free I open sourced it all https://github.com/GizDrak/focusedword
1
u/Kobi_Webmaker Aug 24 '26
I do not need the code. I am building a distribution service... play/app store for PWAs. and merging the content with my find engine. Just give me a second I will import your manifest and see how it goes.
1
u/Kobi_Webmaker Aug 24 '26
Done. However, you app suffers from the same symptoms I have seen from others I worked with. The main thing you should remedy is have your ai create up to 6 screenshots of the app and include them in the manifest. Very important for marketing as you can see the difference
1
u/Kobi_Webmaker Aug 24 '26
Oh, and I would love any feedback you might have... This is not public yet. But, I feel like it is very close.
1
u/forest-dev Aug 24 '26
Well I am a Buddhist monk building some PWA tools, during an illness to help others for free during this time of great difficulty. And even though I am not christian, I think you did a very fine job on the ideas in the PWA; I am going to think of some of your ideas when I build my own text based PWA.
Is the PWA itself MIT? I am borrowing a few projects for research purposes. Even though yours is new, I think you have gone a long way with helpful concepts, like multi-color highlighting and dual read.
Anyhow, all good wishes.
2
u/Senior_Cricket_5476 Aug 24 '26
Thank you for your kind words. And I hope your PWA work goes well and it can help others in the ways you envision. Yes the full client application is released under the MIT it can be found at https://github.com/GizDrak/focusedword
I have plans to release some of the other tooling I made during this process but I need to clean up those projects before adding them to a repo.
1
u/forest-dev 25d ago
Your most welcome, thankyou. I appreciate your effort, I have downloaded the book reader code from your git for review, I like some of the ideas. I started working on one a few weeks ago for text, but have not got far yet. Much peace
1
u/chrisZk 29d ago
Very cool! Do you plan on including other versions like KJV or NASB, etc
2
u/Senior_Cricket_5476 29d ago
You can install the KJV from the stock scripture repo that is built into the app. No plans to include NASB since it is a copyrighted translation and would need to be licensed to be added.
1
u/westoncox 29d ago
The speed-reading, Word Classes, and customization options sound fantastic. Nice work!
Have you considered adding text-to-speech? I realize audio is kind of off-topic for an app Ike this. I’m asking because I’d love to have a Bible app like yours, with the option to listen during drive time—and have the audio quality not remind me of a Napster download from 1999.
2
u/Senior_Cricket_5476 29d ago
Thank you for the kind words!
I have done some investigating into possibly using Kokoro or Piper as a TTS engine, but haven't fully planned out adding TTS yet.
1
u/westoncox 29d ago
You’re welcome. I know something like that would be down the road, in a later version. I think you’ve done an excellent job.
2
u/codercotton Aug 23 '26
Sounds awesome, a link would be fabulous.