finds.dev← search

// the find

Razikus/supabase-nextjs-template

★ 314 · TypeScript · Apache-2.0 · updated Dec 2025

A production-ready SaaS template built with Next.js 15, Supabase, and Tailwind CSS. Includes authentication, user management, file storage, task management demos, and secure RLS policies. Now with a complete React Native + Expo mobile app template! Easily customizable with pre-built themes, i18n support (EN/PL/ZH), and legal documents.

A Next.js 15 + Supabase starter template targeting indie hackers and small teams who want to ship a SaaS quickly. Covers auth (including MFA), file storage, a todo demo, RLS migrations, and now an Expo mobile app sharing the same backend. The free tier is missing billing and multi-tenancy, which are paywalled in a separate product.

- Supabase migrations are versioned and checked in, so the database schema is reproducible rather than being a manual click-through in the dashboard. RLS policies are included rather than left as an exercise.

- MFA is wired up end-to-end on both web and mobile, which most templates skip entirely or only stub out.

- The Expo mobile app reuses the same Supabase project with matching auth flows and storage — not just a copy-paste that diverges immediately.

- i18n (EN/PL/ZH) is present in both web and mobile, which is rare for this kind of template and useful if you're targeting non-English markets.

- No payment integration at all in the free version — Paddle support is paywalled. If billing is your first real feature, you're on your own or paying for the pro template.

- The legal documents (privacy policy, ToS, refund policy) are generic markdown placeholders. They're not jurisdiction-specific and shouldn't be shipped to production without a lawyer reviewing them, but the README doesn't warn about this.

- The `.env` file for the Expo template is committed to the repo with placeholder values, which is fine, but there's no secrets-scanning or CI in `.github/` beyond a FUNDING.yml — no tests, no lint check, no type-check on PRs.

- The auth schema migration story is messy: there's a separate `migrations_for_old/` directory because the original schema used the `auth` namespace directly, which Supabase later disallowed. Existing users have to manually run a fix migration, and the README buries this under a one-liner.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →