// the find
Razikus/supabase-nextjs-template
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.