// the find
scosman/CMSaasStarter
A modern SaaS template/boilerplate built with SvelteKit, Tailwind, and Supabase. Includes marketing page, blog, subscriptions, auth, user dashboard, user settings, pricing page, and more.
A SvelteKit + Supabase + Stripe boilerplate for SaaS products, covering auth, billing, blog, marketing pages, and user dashboard. It's aimed at developers who want to skip the boring plumbing and get to building their actual product. Actively maintained with a real production app (Kiln AI) built on it.
- The Cloudflare Pages + Supabase stack is genuinely free to start and scales reasonably — not a fake '$0' claim with hidden gotchas at any real usage.
- CI is actually set up and working (build, format, lint, tests badges all green), which is rare for boilerplates that usually ship with broken or absent CI.
- Pre-rendering strategy is thought through: marketing/blog pages are static, authenticated routes use SSR/edge functions. The 100/100 Lighthouse score is plausible, not just a marketing claim.
- Stripe integration handles the annoying parts correctly: separate checkout flow, billing portal for self-serve management, and the pricing plan config in TypeScript means plan changes are code changes, not magic dashboard state.
- No proper database migration tooling — you're told to manually run SQL files in the Supabase dashboard. The supabase/migrations directory exists but there's no CLI workflow or migration runner documented, which will bite you the first time you have a staging and prod environment.
- The 'admin' dashboard is explicitly a placeholder — there's a comment telling you to replace it with real content. So you're getting the shell of a product, not anything you can ship without significant work on the core feature area.
- Blog posts are Svelte component files, not markdown or a headless CMS. Adding a blog post requires a developer to create a new route file. Fine for engineers, unusable for anyone else on the team.
- Hard dependency on Cloudflare Workers/Pages for the suggested path; if you need a different deployment target the docs basically say 'good luck, here are some links' and the SvelteKit Cloudflare adapter has its own edge case quirks.