All work
Product case study · retired
Retired 2026Smart 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.