Production-tested SaaS boilerplate for indie hackers tired of rebuilding auth, billing, and deploy plumbing. Supabase Auth SSR, Lemon Squeezy webhooks, PWA, marketplace SEO, CI, buyer docs + live /demo. v1.1 adds public demo page and marketing pack. No fake metrics. $50 on Gumroad.
No reviews yetBe the first to leave a review for Vibe PWA Starter-kit
Maker
đ
I kept losing 2â3 weeks on infrastructure before every SaaS MVP. Vibe PWA Starter-kit is the exact stack I deploy in production: Next.js 16, Supabase, Lemon Squeezy, PWA, marketplace pages, and full CI. v1.1 adds a public demo, setup checklist, and marketing asset pack.
Report
Maker
@duran_ml51620 Thanks for digging into the offline edge case â exactly the kind of question I hoped for on launch day. If you try the demo install flow, curious whether the /offline â back-online UX matches what you expect.
Report
đ§ Good find
How does the Supabase Auth SSR setup handle session refreshes on a PWA that might be offline for stretches at a time?
Report
Maker
@duran_ml51620Â Great question. Sessions live in HTTP-only cookies via @supabase/ssr. On every online request, proxy.ts runs createServerClient() which refreshes the JWT and copies Set-Cookie headers on redirects so you do not lose the session.
Offline: the service worker serves the /offline shell â it does not refresh auth in the background. When the user comes back online, the next navigation goes through the proxy and Supabase SSR refreshes automatically (or redirects to /login if the refresh token expired).
Browser client uses createBrowserClient with the same cookie store for client-side calls when online. See lib/supabase/server.ts, lib/supabase/client.ts, proxy.ts in the kit.
How does the Lemon Squeezy webhook setup actually work for someone who has never used it before, and is there any gotcha around handling subscription cancellations or refunds in the boilerplate?
Report
Maker
@berkay135817Â Great question â first-time flow:
1) Create products in Lemon Squeezy â set env vars (API key, store ID, webhook secret, variant IDs) 2) Kit registers /api/webhooks/lemon-squeezy (provision script) â events: order_created, order_refunded, subscription_created/updated/cancelled/expired
Each webhook: HMAC signature verified â idempotent Postgres claim (no double-processing) â upsert billing_subscriptions.
Cancellations/refunds: order_refunded, subscription_cancelled, subscription_expired all revoke access via deriveAccessGrant. Lemon retries return duplicate safely.
Main gotcha for newcomers: start in Lemon test mode and map variant IDs to plan codes in the catalog. START-HERE + /setup checklist cover it step by step.
Also published two technical posts from the stack: â Lemon webhook idempotency â Supabase Auth SSR + PWA offline behavior
Happy to answer anything in the comments.
Report
Maker
One week after launch â quick recap for anyone landing here now đ Current pricing (older comments above show launch-day pricing): Vibe PWA Starter-kit is $50 one-time on Gumroad (instant ZIP), Complete Ship Kit is $79 (starter + Cursor Launch Kit), both with a 14-day money-back guarantee. Live demo, no signup: https://shipvibe.dev/demo â Get the kit: https://rachidcraft78.gumroad.co... â Also new since launch: public refund/contact/terms pages on shipvibe.dev. Questions welcome, I reply to everything.
Report
Maker
Price update đ
Starter is now permanently $50 (was $100 at launch). Complete Ship Kit: $79 (starter + Cursor Launch Kit).
@duran_ml51620 Thanks for digging into the offline edge case â exactly the kind of question I hoped for on launch day. If you try the demo install flow, curious whether the /offline â back-online UX matches what you expect.
How does the Supabase Auth SSR setup handle session refreshes on a PWA that might be offline for stretches at a time?
@duran_ml51620Â Great question. Sessions live in HTTP-only cookies via @supabase/ssr. On every online request, proxy.ts runs createServerClient() which refreshes the JWT and copies Set-Cookie headers on redirects so you do not lose the session.
Offline: the service worker serves the /offline shell â it does not refresh auth in the background. When the user comes back online, the next navigation goes through the proxy and Supabase SSR refreshes automatically (or redirects to /login if the refresh token expired).
Browser client uses createBrowserClient with the same cookie store for client-side calls when online. See lib/supabase/server.ts, lib/supabase/client.ts, proxy.ts in the kit.
Demo: https://shipvibe.dev/demo
How does the Lemon Squeezy webhook setup actually work for someone who has never used it before, and is there any gotcha around handling subscription cancellations or refunds in the boilerplate?
@berkay135817Â Great question â first-time flow:
1) Create products in Lemon Squeezy â set env vars (API key, store ID, webhook secret, variant IDs)
2) Kit registers /api/webhooks/lemon-squeezy (provision script) â events: order_created, order_refunded, subscription_created/updated/cancelled/expired
Each webhook: HMAC signature verified â idempotent Postgres claim (no double-processing) â upsert billing_subscriptions.
Cancellations/refunds: order_refunded, subscription_cancelled, subscription_expired all revoke access via deriveAccessGrant. Lemon retries return duplicate safely.
Main gotcha for newcomers: start in Lemon test mode and map variant IDs to plan codes in the catalog. START-HERE + /setup checklist cover it step by step.
Hey PH đ
Quick links for today:
⢠Live demo â https://shipvibe.dev/demo
⢠Get the kit â https://rachidcraft78.gumroad.co... ($100 ¡ 14-day refund)
Stack included: Next.js 16 App Router, Supabase Auth SSR + RLS patterns, Lemon Squeezy webhooks, PWA (SW + offline page), marketplace SEO, Vitest/Playwright CI, buyer docs + /setup checklist.
No fake metrics â ask me anything technical, I reply to every comment today.
Quick update since launch đ
⢠Custom Gumroad landing page (better checkout UX)
⢠Starter still $100 ¡ 14-day refund ¡ instant ZIP
⢠Optional Complete Ship Kit ($129) â starter + Cursor Launch Kit
Demo unchanged â real running UI: https://shipvibe.dev/demo
Starter: https://rachidcraft78.gumroad.co...
Also published two technical posts from the stack:
â Lemon webhook idempotency
â Supabase Auth SSR + PWA offline behavior
Happy to answer anything in the comments.
One week after launch â quick recap for anyone landing here now đ Current pricing (older comments above show launch-day pricing): Vibe PWA Starter-kit is $50 one-time on Gumroad (instant ZIP), Complete Ship Kit is $79 (starter + Cursor Launch Kit), both with a 14-day money-back guarantee. Live demo, no signup: https://shipvibe.dev/demo â Get the kit: https://rachidcraft78.gumroad.co... â Also new since launch: public refund/contact/terms pages on shipvibe.dev. Questions welcome, I reply to everything.
Price update đ
Starter is now permanently $50 (was $100 at launch).
Complete Ship Kit: $79 (starter + Cursor Launch Kit).
Demo unchanged: https://shipvibe.dev/demo
Starter: https://rachidcraft78.gumroad.co...
Bundle: https://rachidcraft78.gumroad.co...
Still 14-day refund ¡ no inflated user counts.