FeedSnap
Collecting pixel-accurate website feedback usually means messy screenshots and email threads. FeedSnap is a multi-tenant Marker.io competitor: an embed widget pins screenshot-annotated comments at exact coordinates for owners to triage in a dashboard.
- Role
- Solo Developer
- Timeframe
- 2025
Stack
Architecture
Key decisions
A monolithic Next.js App Router app: dashboard, public widget API, and billing sync all in one codebase, deployed serverless on Vercel.
Splitting into a separate API server and a standalone frontend SPA from the start.
For a lean, mid-stage SaaS, one codebase kept routes, components, and Lemon Squeezy billing sync co-located and shipping fast on serverless. A distributed split would have added operational overhead before the core feedback-capture workflow was proven. The tradeoff is deferred boundaries: multi-tenant limits and cross-region scale will eventually force service seams, but that cost is paid later and deliberately, not up front.
Cross-instance rate limiting on Upstash Redis, with an in-memory Map fallback when Upstash credentials are absent.
Relying only on per-instance in-memory counters.
Serverless functions scale to many isolated instances, so a per-instance counter alone lets an abuser slip past limits by hitting different instances. Upstash gives one shared counter across every instance. The in-memory fallback keeps local dev and un-provisioned environments running instead of hard-failing when the dependency is missing.
Try it
Screens


