CASE STUDY · NEXT.JS PWA · 2025

Knotbook

Offline-first PWA with Stripe billing and real-time sync.

Offline

first architecture

Knotbook, project hero
Client
Knotbook
Industry
SaaS
Platform
NEXT.JS PWA
Stack
Next.js, TypeScript, Stripe, IndexedDB
Year
2025
Services
Custom web apps & SaaS

The brief

Knotbook needed an app that kept working on flaky connections, with billing and cross-device sync.

What we did

  • Built an offline-first Next.js PWA.
  • Implemented Stripe billing and entitlements.
  • Added conflict-aware real-time sync.
  • Shipped installable across desktop and mobile.

How we built it

Local-first storage with a sync layer reconciles changes when connectivity returns, using idempotent operations and a last-writer-wins strategy with conflict surfacing for edge cases.

Wedding planning happens in the worst possible places for a web app. Venue visits with patchy signal, vendor meetings in old buildings with hostile Wi-Fi, dress fittings with phones in airplane mode. A traditional network-first app punishes the user every time, with a spinner here, a failed save there. Knotbook needed to feel the same whether the network was solid, intermittent or absent.

Knotbook PWA on tablet and mobile
Knotbook PWA on tablet and mobile, tabletKnotbook PWA on tablet and mobile, mobile

Local-first by default

The app reads and writes against IndexedDB before it ever talks to the server. Every interaction in the UI completes in single-digit milliseconds because nothing is waiting on a round trip. The sync layer runs in the background, batching changes and reconciling them when connectivity returns.

Conflict-aware sync

Multi-device editing is the obvious edge case for any offline-first app. Two laptops, two phones, one bride. The sync layer uses idempotent operations so retries never double-apply a change, and a last-writer-wins strategy for the common case where two devices edit different fields on the same record. Genuine conflicts (same field, different values) surface to the user rather than getting silently overwritten.

Stripe billing and entitlements

Stripe handles the subscriptions, but the app checks entitlements locally from a signed token cached on the device. That means premium features work offline too, until the token expires. Webhooks keep the local entitlement state in sync with Stripe's source of truth.

Installable across desktop and mobile

The PWA installs from the browser on iOS, Android, macOS and Windows without an app store. One codebase, four platforms, no native shell. Updates ship as a deploy, no review queue.

What changed

Knotbook now behaves identically online and offline. Wedding planners working from venues, vendor meetings and homes with poor Wi-Fi see no difference in the app's responsiveness. Billing is reliable, sync is conflict-aware, and the install footprint is small enough that even mid-tier Android phones run the app smoothly.

The result

A resilient app that behaves the same online or offline, with reliable billing.

100%

feature parity offline

Very satisfied and happy with the service provided by DevonicWeb. They exceeded my expectations and made my ideas come to reality, with great communication, and helped guide me to make informed decisions as this is all new to me. Highly recommend them, worth every penny!
MZMaida ZarinFounder

Tech stack

  • Next.js
  • TypeScript
  • Stripe
  • IndexedDB

07, START A PROJECT

Want work like this?

Tell us what you're building. We reply within 4 hours during UK business hours.