All work

Product case study · retired

Retired 2026

Smart Notes

A notes product shipped end to end: offline-first local state, Google sign-in, Firestore sync, free and pro tiers, Razorpay payments, and deployment. Kept as a case study in what shipped and what I would change.

Next.jsReactFirebase AuthFirestoreRazorpayZustand

The brief

Most note apps either lock your writing behind a connection or charge before the basics work. The goal was a fast notes app that opens instantly, works offline, and only asks for an account when you want sync across devices.

It shipped as a progressive web app with a free tier, a paid tier, and no advertising or tracking beyond basic analytics.

What we built

  • Offline-first PWA: local state first, cloud reconciliation when signed in.
  • Google sign-in with a per-user profile and real-time plan status.
  • Two-way Firestore sync with last-write-wins conflict handling and debounced writes.
  • Free and Pro limits on note count and character count.
  • Razorpay order creation and signature verification in Next.js route handlers.
  • Markdown, code snippets, and inline math rendering.

What we learned

  • Offline-first is a product feature, not a checkbox: deletion tombstones and conflict handling matter more than the sync demo.
  • Consumer pricing is brutal — a low monthly price does not cover support and payment overhead.
  • Entitlements belong on the server; a client-writable plan flag is not a paywall.
  • Retiring is part of the lifecycle. The site keeps this page instead of linking to a dead app.

Retired in October 2026. The product, database, and hosting were removed; no customer data was retained beyond an export taken before deletion.

Need something like this?

Fixed scope, fixed price, and a working product at the end.

Start a project