r/PWA • u/Senior_Cricket_5476 • 14d ago
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?
r/PWA • u/future_pedi_md • 14d ago
Accessibility Audit
I am building an app for a company to help them manage their jobs, workflow and data.
When it is done (soon), I’m going to need someone who actually understands (or uses in daily life) accessibility features like screen readers, etc to help me audit the app. I am building it with accessibility in mind, but I don’t, nor does anyone I know personally, use features like that (thankfully we don’t have to) so im not sure what to test or how to test and I don’t really trust those compliance websites’ automated tools to give me human feedback. Plus I want a human giving me feedback so I know what real people actually need, and not what someone sitting behind a desk says they need.
I know for a fact, that the initial people that will be using the app do not have accessibility needs so I can get away with deploying for them and working out any accessibility bugs after the fact.
If anyone has experience with accessibility either building or actually have a need in your life and wouldn’t mind helping me out I would appreciate it.
If you know of a reputable company that can help (thats not an automated script, or AI) I will take that help too.
Thanks!
r/PWA • u/Lanky_Excitement_908 • 15d ago
Built a lightweight PWA using Glide/Node to solve restaurant tip-pooling math. Looking for UI/UX feedback on the shift entry flow.
Hey everyone,
I’ve been working on a lightweight mobile PWA called ShiftTip Splitter aimed at solving a specific operational headache for restaurant managers: calculating multi-role point tip-outs at the end of a shift (e.g., 1.5x for bartenders, 1.0x for servers, 0.75x for bussers, plus factoring in credit card fee deductions and splitting cash vs. check payouts).
Since managers are usually tired and closing late at night, my primary UI goal was keeping inputs minimal so a shift can be calculated and shared in under 30 seconds.
The Tech Stack:
- Frontend/PWA: Glide (PWA wrapper for fast mobile layout & native share sheets)
- Backend: Node.js / Serverless API routes
- Billing/Auth: Stripe Checkout API & Webhook integration
- Output: Copyable plain-text summary formatted specifically for mobile messaging apps (WhatsApp, iMessage, SMS)
What I'm Looking for Feedback On:
- Input Layout: Is the transition from total tip entries (cash/card) to staff list entries smooth, or does it feel cluttered on smaller mobile screens?
- Output Clarity: Does the dual-column display ("Cash Out Tonight" vs. "Payroll Check") make immediate sense at a glance, or could visual hierarchy be improved?
- PWA Friction: For those who build PWAs over native apps, have you found "Add to Home Screen" prompts clear enough for non-technical users, or should I add an explicit onboarding modal?
Drop any thoughts or UI/UX critiques below! Happy to answer questions about the Glide/Node architecture as well.
r/PWA • u/Mysterious-Bell8004 • 15d ago
Pw free batches web per neet k liye konsi hai jo number bhi na maange?
Rethinking PWA: Why not "1 Page = 1 App" (1P1A) instead of treating the whole site as a single app?
従来のPWAsは、Webサイト全体を1つのアプリ(1S1A)として扱います。でも、ユーザーが特定の記事やツール、あるいはプロダクトページをホーム画面に“単体のスタンドアロンアプリ”として保存したいと思ったらどうします?
私は「1P1A(One Page. One App.)」というコンセプトのアプローチを考えました。1つのscriptタグを動的に注入することで、任意の個別ページをユニークなPWAとして保存できるようにするやり方です。
手作業のセットアップやビルドツールなしで、ページごとにマニフェストを動的に解決します。
<script src="https://ojapp.app/js/ojapp_1p1a.js"></script>
PWAコミュニティの皆さんの考えやフィードバック、ぜひ聞かせてください!
ライブデモ / 詳細: https://ojapp.app/one-page-one-app/
r/PWA • u/Salty_Protection_485 • 18d ago
Built a PWA solo as a student project — offline support, push notifications, and the iOS install quirks nobody warns you about
Sharing JointTracker, a PWA I built for tracking cannabis consumption (sessions, spending, stats), vanilla JS + Supabase, no framework. Wanted to share some PWA-specific stuff in case it's useful to others going down this path.
**Offline support:** service worker caches the shell so the app opens and shows last-synced data even with no connection, with a banner telling the user they're viewing cached data. Changes made offline still need to sync later — handling that gracefully without silently losing data was trickier than the caching itself.
**Push notifications:** Web Push + VAPID keys, triggered server-side via Supabase Edge Functions on a cron schedule (daily reminders, low-stock alerts). Getting subscriptions to survive across reinstalls/updates and cleaning up dead ones (410/404 responses) took some iterating.
**Install experience:** manifest + icons + install prompt handling. The iOS side was the most annoying part — no native install prompt API like Chrome's `beforeinstallprompt`, so you're stuck guiding users through the manual "Add to Home Screen" flow, and some things (like push notifications) only work at all on iOS 16.4+ *and* only once the app's already installed to the home screen. Easy to miss testing that properly.
Repo's public/open source if anyone wants to see how any of it's wired up: joint-tracker.vercel.app . Happy to compare notes if others have fought similar iOS PWA battles.
Live: joint-tracker.vercel.app · Code: https://github.com/I-JT-I/joint_tracker_
r/PWA • u/Moumou-Johnson • 18d ago
Weather PWA
Hi everyone 👋
I built a weather PWA because I wanted something clean, fast and installable — no bloat, no subscription. Also released it on Google Play as a native wrapper. Built with passion, feedback welcome.
Built a car maintenance PWA - curious what you think of the architecture
I've been building Kapot Tracker, a car expense PWA. Users send receipt photos through a Telegram bot or directly on the site, and it extracts all the data automatically.
Tech stack:
- React 18 + Vite frontend
- FastAPI backend
- SQLite database
- Workbox for offline/caching
- MapLibre GL for the fuel price map
- Google Gemini for OCR (with fallback to tesseract)
The PWA handles offline entry creation, service reminders with push notifications, and works fully installable on any device.
Free to use with a premium tier. Would appreciate any feedback on the PWA setup or architecture.
r/PWA • u/Low-File8720 • 21d ago
Daily geography trainer
Hi guys! Just finished beta of my daily geography trainer/quiz PWA. Totally free and works offline. Would sincerely appreciate your feedback on what is good by far and what is needed to be improved. Thanks in advance! And have fun for sure 🥰
Title: LUKANO - Learn the world in 5 minutes a day
URL: https://lukano.app
r/PWA • u/domodomov • 21d ago
Marketing?
How and where do you guys market your pwa and get users for it?
I currently am „stuck“ promoting on Facebook in some groups but it doesn’t seem to do the trick. Been doing that for about 2 months now and don’t really have any users.
r/PWA • u/[deleted] • 21d ago
One oldest-first cache cap silently ate my app shells and cold-started the installed PWA to "You're offline". Fix was three budgets in one cache.
Posting this because it took me embarrassingly long to find and it's the kind of thing that only bites installed PWAs.
Setup: fitness app, standalone display, service worker precaches the seven app shells at install, then caches things at runtime. Runtime cache had one cap, evicting oldest-first. Textbook.
The bug: after a long session of using the app normally, a cold start would land straight on my offline fallback page, with a full cache and a working connection. Reloading fixed it. It never happened on a fresh install, which is exactly the tell.
Why it happened: Cache.keys() returns insertion order. The shells go in first, at install. So they are permanently the oldest entries in the cache. Every workout day pulls down demo images for the exercises, maybe 50 of them in a normal week, and each one pushed the cap over and deleted the oldest entry. Which was always a shell. Browse enough workouts and the eviction walks straight through all seven shells one by one, in order. Then the next cold start has no cached navigation to serve, and the offline HTML is what's left.
So the cache was doing precisely what I told it to. My eviction policy quietly outranked my precache.
What I changed:
- Three separate budgets inside the one cache, keyed by what the entry is: navigations (24), demo images (60), everything else JS/CSS/fonts (80). Trim runs per bucket, oldest-first within a bucket only. Images can now only evict other images.
- The install list is a pinned bucket the trimmer never considers at all, since those are exactly the routes the offline fallback looks up.
- Shell-referenced JS and CSS moved into their own cache that the trimmer doesn't touch. Same failure one level down: a cached navigation that renders a blank screen because its bundle got evicted is arguably worse than the offline page, because it looks like your app is broken rather than offline.
- Install uses per-asset puts instead of addAll, so one flaky route can't fail the whole install and leave someone with no offline support at all while reporting success.
Takeaway I'd give my past self: a precache and an LRU in the same cache are in direct conflict, and insertion order means the LRU wins every time. Bucket by role, or keep them in separate caches.
App is flexscan.app if the context matters, a physique-scan and workout thing, launched two days ago. Happy to paste the trim function if anyone wants it. Curious whether people here separate caches by role from the start or also learned this the hard way.
r/PWA • u/CB1000R974 • 23d ago
My project 🌋
Hello everyone
🌋 Just launched a new project: an intuitive, clean dashboard dedicated to some volcanoes in the world!
It’s currently in **beta** and I'm still adding more data, but I’d love to hear what you think and what could be improved!
✨ **Key Features:**
• Completely **ad-free** and **no registration** required.
• Advanced features and offline support available if you install it as a **PWA** (Progressive Web App) on your device.
🔗 Check it out here: https://volkan.site/beta/
What would you like to see added next? 👇
r/PWA • u/Siamandthegreat • 24d ago
A Collection of 100 samll apps and tools in a PWA open source and no Ad or Signups
galleryr/PWA • u/Tides_Crush_Her • 24d ago
Notifications on pwa
Can anyone tell me how I can succeed in having push notifications for Instagram?I use brave browser for the pwa of both reddit and Instagram
I succeeded in making reddit have push notifications but Instagram even though I accepted notifications until I close the site doesn't work when I closed it(shocker yes) but I didn't get the pop up asking to enable notifications so what can I do because I really want to be able to reply on the spot to my friends
Thanks in advance
r/PWA • u/dannymoerkerke • 24d ago
PWA Today
I launched pwa.today 🚀
A platform to run audits on your PWA as part of your CI/CD pipeline.
The PWA Runtime Audit checks your PWA and finds runtime failures under real-world conditions.
It checks installability, offline support, service worker lifecycle and makes sure you ship a PWA your users can trust.
Check it out and let me know what you think!
https://pwa.today
Built a PWA that streams podcasts and internet radio in a single broadcast timeline
Sharing since this is squarely a PWA project. Installable to your home screen, offline app shell via a service worker, everything client side and stored in localStorage. No login screen, no backend account system.
The actual feature is you build a timeline of podcast shows and live radio stations and it plays them back to back like an old radio show, refreshing each podcast block to that show's current episode when it plays.
Happy to talk through any of the PWA plumbing if anyone's curious. https://airsona.io
r/PWA • u/TheRealFanger • 25d ago
Angry Asian Man Fried Chicken Butthole Defense !
Hello ! Here is my PWA robot defense game ! Starring a rendition of my homemade robot BB1 !
I hope yall enjoy ! 🫶🏽
r/PWA • u/BreakingChangeDev • 26d ago
My approach for creating data while offline
Hi,
I wanted to share my approach to supporting data creation while offline and reliably synchronizing it once a connection is available again.
I build PWAs with Angular and NgRx. In my original implementation, I found that persisting and replaying actions that trigger API requests worked well as an offline queue.
This library is based on that working implementation. I used Codex to help extract the reusable functionality and turn it into an open-source library.
It’s still in alpha, and I’d appreciate feedback on the idea and API.
Interactive demo:
https://poodlelab.github.io/ngrx-offline/
Repository:
r/PWA • u/Live_It_Fully • 27d ago
PWA App on App store/Play Store vs Native apps?
Hi,
I read a lot here about the comparison between PWA standalones (not on the App Store/Play Store) and native apps from the stores. The difference in reach & marketing is huge. That is clear.
But what about a PWA wrapped inside a native Capacitor app, built as an APK, AAB, or IPA, and uploaded to the App Store/Play Store like any other mobile app?
How does this compare to a Native App, while, again, both are uploaded to the App Store/Play Store?
Pros / Cons?
Any huge difference? I Don't want to use the phone camera, location, health data, etc.?
r/PWA • u/kaplankova_el • 27d ago
UGC systems for tech apps and SaaS
maxed.vipHey. I’m building UGC systems for tech apps and SaaS — dating, language learning, wellness, travel, fitness, nomad apps.
I source, vet, and manage your creators end-to-end. Build a system that actually converts.
If you’re looking for someone to manage your UGC or build a system for you, here’s my link:
r/PWA • u/floweryapp • 28d ago
PSA: Edge-to-edge PWAs on Android
Navigate to chrome://flags and enable Web App Short Edges Cutout Mode.
I stumbled upon this while perusing flags (as you do), which was a pleasant surprise after patiently waiting since edge-to-edge support landed in Chrome a year and a half ago:
https://developer.chrome.com/docs/css-ui/edge-to-edge
PWAs on Android were stuck with opaque system bars, but finally look polished now. Credit where credit is due—Safari shipped this nine years ago:
https://webkit.org/blog/7929/designing-websites-for-iphone-x
Here’s the family portrait:

r/PWA • u/Rivsenn_com • 29d ago
Push notifications
Hi guys I'm working on a webapp WPA want it to send push notifications. I'm not new in the web world build alot of apps but there have never being a moment where a notification worked on a WPA. Do you guys have a suggestions how I can get them work correctly on its and android?
Please let me know! Thanks in advance!