Progressive web apps that install, work offline and respect privacy

We plan, design and build installable web apps that run on phones and desktops without a separate app-store build. Offline-first where it makes sense; privacy by design.

Local-first apps: the device holds the primary copy

A local-first app treats the phone or laptop as the source of truth. The server, if there is one, is a sync target — not a gate you have to pass before you can work.

  • Use it when the product has to keep working on a train, in a basement kitchen, or anywhere the connection drops.
  • Use it when the data is personal (journals, health-adjacent logs, private notes) and should not depend on an account to exist.
  • Use it when export and import matter more than a dashboard on our servers.

A web app can run fully offline for its core loop: the UI and recent data sit in a service worker and IndexedDB, edits queue locally, and they sync when the network returns. Features that need a live server (shared multiplayer, payment capture) still need a connection; we design those as explicit online steps, not silent failures.

We have shipped this model on Sarj — local‑first sprouting tracker PWA · Lendület — private habit and meal journal PWA

Questions we get about PWAs

How much does a PWA cost?
It depends on scope. As a guide: offline-first PWA without a custom backend typically lands between 1,200,000–2,500,000 Ft net. A PWA or web app MVP with its own backend starts around 2,500,000 Ft and scales with complexity.
Do PWAs work on iPhone?
Yes. iOS supports installable PWAs from Safari (iOS 16.4+). Push notifications require adding the app to the Home Screen first. Core features—offline pages, local storage, fast loading—work on iOS and Android.
When should we pick a PWA over a native app?
When the product is primarily about content or forms, when one codebase for web + mobile matters, and when app‑store distribution is not required. Hardware‑heavy features (Bluetooth LE, background services) may still point to native.
How does offline work?
The app caches UI and data with a service worker. Changes are queued locally and synced once the connection returns. We design for clear states: ‘saved locally’, ‘pending’, and ‘synced’—so people always know what happened.

Work that proves it

// NEXT STEP

Planning a website or app?

Tell us what you want to build and where you are stuck. We will reply with a clear next step.