{"repo":"imbhargav5/nextbase-nextjs-supabase-starter","free":true,"listed":false,"github":"https://github.com/imbhargav5/nextbase-nextjs-supabase-starter","clone":"git clone https://github.com/imbhargav5/nextbase-nextjs-supabase-starter.git","description":"🚀⚡️ Free Boilerplate and Starter kit for Next.js 16+, Supabase, Tailwind CSS 4 and TypeScript. 🚀 Next.js 🔥 Supabase 💻 TypeScript 💚 ESLint 🎨 Prettier 🐶 Husky 🧹 Lint-Staged 🧪 Jest 🧪 Testing Library 🕹️ Playwright ✍️ VSCode 🌪️ Vercel 🎨 PostCSS 🍃 Tailwind CSS ⚛️ React Query ","language":"TypeScript","stars":806,"topics":["boilerplate","boilerplate-react","eslint","jamstack","js-boilerplate","nextjs","nextjs-boilerplate","nextjs-starter","nextjs-tailwind","nextjs-template","nextjs-typescript","postcss","saas-boilerplate","seo","shadcn-ui","starter-kit","tailwindcss","typescript"],"license":"MIT","category":"saas_starter","readme_excerpt":"# NextBase Starter — Open Source Next.js + Supabase Boilerplate\n\n> A production-grade Next.js 16 + Supabase foundation. Free, MIT-licensed, and ready to clone.\n\nNextBase Starter is the open-source baseline of the [NextBase](https://usenextbase.com) family — an opinionated, tested starting point for SaaS teams building on Next.js 16 and Supabase. It bundles the auth, RLS, monorepo, and caching patterns that you would otherwise spend weeks deriving from scratch.\n\n- **Demo:** _[live demo URL]_\n- **Documentation:** _[docs URL]_\n- **Changelog:** see [`CHANGELOG.md`](./CHANGELOG.md)\n- **License:** MIT — see [`LICENSE`](./LICENSE)\n\n> **Need more than the starter?** Stripe billing, teams & orgs, RBAC admin, transactional emails, multi-tenancy, AI starter kits — all built on the same patterns — ship as **premium NextBase kits**. **[→ See the premium kits at usenextbase.com](https://usenextbase.com)**\n\n---\n\n## Why this exists\n\nEvery SaaS team writes the same code in the first sprint and the same code in the first incident:\n\n- A \"simple\" Supabase auth integration that quietly breaks SSR cookies after a refresh, then again after a deploy.\n- An RLS policy that looked right in review and silently leaked a row in production.\n- A server-action layer that was supposed to be type-safe but ended up being three subtly different patterns across the codebase.\n- A monorepo that started clean and devolved into a tangle of relative imports and untyped envs.\n- A \"we'll add caching later\" that turns into a `revalidatePath` archaeology dig six months in.\n\nNextBase compresses all of that prior art into a maintained, opinionated starter. You inherit decisions that have already failed in production somewhere else, so they don't have to fail in yours.\n\n---\n\n## Features\n\n### Authentication\n- **Supabase Auth, SSR-correct.** `@supabase/ssr` clients for browser, server components, server actions, and middleware — wired so cookies survive every render boundary in Next.js 16.\n- **Multiple sign-in methods out of the box:** email + password, passwordless magic link, and OAuth (Google, GitHub, Twitter — add more in minutes).\n- **Hardened middleware.** A single source of truth for protected routes (`/dashboard`, `/private-item`, `/private-items`, …) using `path-to-regexp` matching and `supabase.auth.getUser()` re-verification on every request.\n- **Battle-tested flows.** Sign-up, sign-in, sign-out, email confirmation, forgot-password, update-password, and OAuth callback / code-error pages — all implemented as Server Actions and tested.\n\n### Database, Permissions & Multi-Tenancy\n- **Supabase Postgres with Row Level Security from day one.** Every user-owned table ships with `SELECT`/`INSERT`/`UPDATE`/`DELETE` policies keyed off `auth.uid()`.\n- **Versioned migrations.** Real timestamped SQL migrations under `apps/database/supabase/migrations` — not a hand-edited single file.\n- **Generated database types.** `pnpm gen-types` (remote) and `pnpm gen-types-local` (local) regenerate `database.types.ts` so every query is end-to-end typed.\n- **pgTAP-ready test harness.** A test scaffold under `apps/database/supabase/tests` for asserting RLS policies, triggers, and constraints.\n- **`updated_at` triggers** standardized via a single `public.set_updated_at()` function — applied per-table, not duplicated.\n\n### Server Actions, Validation & Data Layer\n- **`next-safe-action` everywhere.** All mutating endpoints are Zod-validated, typed end-to-end, and ship with two pre-built clients:\n  - `actionClient` — base client with development-time perf + payload logging middleware.\n  - `authActionClient` — extends the base client and injects `ctx.userId` for the current user, refusing unauthenticated calls.\n- **Clean data-access separation.** Queries are partitioned by trust boundary:\n  - `src/data/anon/*` — anonymous, public reads\n  - `src/data/auth/*` — authentication flows (sign-in, sign-up, sign-out)\n  - `src/data/user/*` — authenticated user data (RLS-enforced)\n  - `src/rsc-data/*` — React Server Component data fetchers\n- **Optional `effect-ts` integration.** Composable `Effect`-based query helpers and typed Supabase error mapping under `src/utils/effect-*` for teams that want railway-oriented data flow without leaking it into every file.\n\n### Caching, Performance & UX\n- **Next.js 16 Cache Components (`cacheComponents: true`).** Static-by-default rendering with surgical `\"use cache\"` boundaries, plus a written guide ([`docs/NEXTJS_CACHE_COMPONENTS.md`](./docs/NEXTJS_CACHE_COMPONENTS.md)) explaining exactly when and how to use each primitive.\n- **Suspense-first data fetching** via `createSuspenseResource` and TanStack Query — clean loading boundaries, no waterfall fetches.\n- **Turbopack dev server** for sub-second HMR on real-world component trees.\n- **Optimized `next/image` remote patterns** preconfigured for Supabase Storage and Unsplash.\n\n### UI & Developer Experience\n- **shadcn/ui pre-installed** with the full Radix primitive set (40+ components: dialogs, command palettes, sidebars, sheets, toasts, hover cards, OTP input, …) — ready to copy, paste, and customize.\n- **Tailwind CSS v4** via `@tailwindcss/postcss`, including `@tailwindcss/forms` and `@tailwindcss/typography`.\n- **Framer Motion**, **Embla Carousel**, **cmdk**, **input-otp**, **Lucide icons**, **date-fns**, **React Hot Toast** — the entire baseline UI toolkit you would have installed in week one.\n- **React Bits** animated components (BlurText, ShinyText, SpotlightCard) installed via the shadcn registry and used on the home page and login screen.\n- **TypeScript** with shared `packages/typescript-config`, `oxlint` + `oxfmt` (Oxc-based, ~50× faster than ESLint+Prettier), and centralized Zod schemas in `src/utils/zod-schemas`.\n- **Tested.** Vitest + Testing Library for unit, Playwright for E2E — both already wired into Turbo pipelines.\n\n### Infrastructure, Observability & Releases\n- **Turborepo monorepo** (`apps/*`, `packages/*`) with `pnpm` workspaces and pipelined `build`, `lint`, `test`, `typecheck`, `gen-types`, `test:e2e` tasks.\n- **Local Supabase stack** lifecycle scripts: `pnpm database#start | stop | status`.\n- **Changesets-based release automation.** Every shippable change ships with a changeset; an automated \"Version Packages\" PR rolls them into a single bumped release, syncs `apps/web` versions, and cuts a GitHub release.\n- **GitHub Actions starter workflows** (Playwright + coverage) included.\n- **SEO baked in:** `next-seo`, `next-sitemap` postbuild, JSON-LD and Open Graph helpers.\n\n---\n\n## Screenshots\n\n> _Replace these placeholders with your branded captures once you customize the marketing surfaces._\n\n| | |\n|---|---|\n| **Landing & marketing** — the `(external-pages)` route group, including the home page and `/about`, ready to be replaced with your positioning. | _[screenshot]_ |\n| **Authentication** — login / sign-up / magic-link / forgot-password screens with provider buttons (Google, GitHub, Twitter). | _[screenshot]_ |\n| **Dashboard** — the authenticated `(app-pages)` shell with sidebar, breadcrumbs, and a CRUD reference page. | _[screenshot]_ |\n| **Private items CRUD** — RLS-protected list, detail (`/private-item/[id]`), and create-new flows demonstrating the full data path. | _[screenshot]_ |\n\n---\n\n## Tech stack\n\n| Layer | Choice |\n|---|---|\n| Framework | Next.js 16 (App Router, Cache Components, Turbopack) |\n| UI runtime | React 19 |\n| Language | TypeScript (`strictNullChecks` enabled) |\n| Database & Auth | Supabase (Postgres, RLS, Auth, Storage) |\n| Auth SSR | `@supabase/ssr` |\n| Server Actions | `next-safe-action` + Zod |\n| Effects (optional) | `effect` + `@effect/platform` |\n| Data fetching | TanStack Query + React Suspense |\n| UI primitives | shadcn/ui on Radix UI |\n| Styling | Tailwind CSS v4 (PostCSS) + Tailwind Forms / Typography |\n| Forms | React Hook Form + Zod resolvers |\n| Animation | Framer Motion |\n| Lint / Format | oxlint + oxfmt |\n| Unit / Integration tests | Vitest + Testing Library + jsdom |\n| E2E tests | Playwright |\n| Monorepo | Turborepo + pnpm workspaces |\n| Releases | Changesets |\n| SEO | `next-seo`, `next-sitemap` |\n\n---\n\n## Architecture overview\n\nNextBase is a Turborepo with two apps and shared config packages.\n\n```\nnextbase-nextjs-supabase-starter/\n├── apps/\n│   ├── web/                            # Next.js 16 application\n│   │   ├── src/\n│   │   │   ├── app/\n│   │   │   │   ├── (external-pages)/   # Public marketing routes\n│   │   │   │   ├── (auth-pages)/       # login, sign-up, forgot-password,\n│   │   │   │   │                       # update-password, auth/callback,\n│   │   │   │   │                       # auth/confirm, auth/auth-code-error\n│   │   │   │   ├── (app-pages)/        # Authenticated app shell:\n│   │   │   │   │                       # dashboard, private-items,\n│   │   │   │   │                       # private-item/[privateItemId]\n│   │   │   │   └── layout.tsx\n│   │   │   ├── components/             # shadcn/ui + auth components\n│   │   │   ├── data/\n│   │   │   │   ├── anon/               # Public, anonymous data access\n│   │   │   │   ├── auth/               # Auth flows (server actions)\n│   │   │   │   └── user/               # Authenticated, RLS-scoped queries\n│   │   │   ├── rsc-data/               # RSC-only fetchers\n│   │   │   ├── supabase-clients/       # browser / server / middleware\n│   │   │   ├── lib/                    # safe-action clients, utils\n│   │   │   ├── utils/                  # zod schemas, helpers, effect bridge\n│   │   │   ├── hooks/\n│   │   │   ├── contexts/\n│   │   │   └── styles/\n│   │   ├── e2e/                        # Playwright specs\n│   │   ├── playwright.config.ts\n│   │   ├── vitest.config.ts\n│   │   └── next.config.ts              # cacheComponents enabled\n│   └── database/\n│       └── supabase/\n│           ├── migrations/             # Timestamped SQL migrations\n│           ├── tests/                  # pgTAP-style RLS / schema tests\n│           ├── seed.sql\n│           └── config.toml\n├── packages/\n│   └── typescri","default_branch":"main","files":306,"tree":[".agents/skills/component-to-shadcn-component-converter/SKILL.md",".agents/skills/component-to-shadcn-component-converter/references/conversion-recipes.md",".agents/skills/component-to-shadcn-component-converter/references/library-mappings.md",".agents/skills/component-to-shadcn-component-converter/references/styling-conversions.md",".agents/skills/nextbase-frontend-smoke-test/SKILL.md",".agents/skills/nextjs-cache-components/SKILL.md",".agents/skills/nextjs-cache-components/references/migration.md",".agents/skills/nextjs-cache-components/references/patterns.md",".agents/skills/pgtap-test-generator/SKILL.md",".agents/skills/pgtap-test-generator/references/helpers.md",".agents/skills/pgtap-test-generator/references/templates.md",".agents/skills/shadcn-expert/SKILL.md",".agents/skills/shadcn-expert/references/advanced-patterns.md",".agents/skills/shadcn-expert/references/component-library.md",".agents/skills/shadcn-expert/references/data-table-patterns.md",".agents/skills/supabase-schema-migrations/SKILL.md",".changeset/README.md",".changeset/config.json",".changeset/upgrade-nextjs16.md",".editorconfig",".env.development.local.example",".env.local.example",".github/actions/ci-setup/action.yml",".github/banner.png",".github/litebanner.png",".github/workflows/ci.yml",".github/workflows/integration-tests.yml",".github/workflows/release.yml",".github/workflows/update-dependencies.yml",".github/workflows/version-packages.yml",".gitignore",".mergify.yml",".node-version",".nvmrc",".vscode/settings.json",".vscode/tasks.json","AGENTS.md","CHANGELOG.md","LICENSE","README.md","TROUBLESHOOTING.md","apps/database/package.json","apps/database/supabase/.gitignore","apps/database/supabase/config.toml","apps/database/supabase/migrations/20230208104717_init.sql","apps/database/supabase/migrations/20230208104718_private_items.sql","apps/database/supabase/migrations/20251021200056_remove_items_add_constraints.sql","apps/database/supabase/migrations/20251022155551_fix_policy_conflicts.sql","apps/database/supabase/migrations/20251109011059_create_blog_posts.sql","apps/database/supabase/migrations/20251117162807_add_owner_id_to_private_items.sql","apps/database/supabase/migrations/20260627094211_add_explicit_grants.sql","apps/database/supabase/schemas/init.sql","apps/database/supabase/seed.sql","apps/database/supabase/tests/database_test.sql","apps/database/tsconfig.json","apps/web/.env.test","apps/web/CHANGELOG.md","apps/web/components.json","apps/web/e2e/_helpers/login-user.helper.ts","apps/web/e2e/_helpers/signup.helper.ts","apps/web/e2e/_setups/user.setup.ts","apps/web/e2e/anon/access-to-pages.spec.ts","apps/web/e2e/anon/public-pages.spec.ts","apps/web/e2e/tsconfig.json","apps/web/e2e/user/access-to-pages.spec.ts","apps/web/e2e/user/private-items.spec.ts","apps/web/next-env.d.ts","apps/web/next-sitemap.config.cjs","apps/web/next.config.ts","apps/web/oxlint.json","apps/web/package.json","apps/web/playwright.config.ts","apps/web/playwright/global-setup.ts","apps/web/postcss.config.mjs","apps/web/public/assets/admin-image.png","apps/web/public/assets/help-assets/organisations-teams.png","apps/web/public/assets/help-assets/teams-projects.png","apps/web/public/assets/image-background-login.png","apps/web/public/assets/login-asset-dashboard.png","apps/web/public/assets/logo-login.png","apps/web/public/assets/onboardingFeatures/adminPanel.png","apps/web/public/assets/onboardingFeatures/authentication.png","apps/web/public/assets/onboardingFeatures/layout.png","apps/web/public/assets/onboardingFeatures/nextjs-type-supa.png","apps/web/public/assets/onboardingFeatures/userImpersonation.png","apps/web/public/assets/user-image.png","apps/web/public/e2e.png","apps/web/public/images/admin-dashboard-2.png","apps/web/public/images/admin-dashboard-maintenance-mode.png","apps/web/public/images/admin-dashboard-users-2.png","apps/web/public/images/admin-dashboard-users.png","apps/web/public/images/projects-view-2.png","apps/web/public/images/projects-view.png","apps/web/public/images/supabase-dashboard-api-logs.png","apps/web/public/images/supabase-dashboard.png","apps/web/public/images/supabase-graphs-2.png","apps/web/public/images/supabase-graphs.png","apps/web/public/images/supabase-sql-editor.png","apps/web/public/images/supabase-tables.png","apps/web/public/logos/acme-logo-dark.png","apps/web/public/logos/acme-logo-light.png","apps/web/public/logos/logo-black.png","apps/web/public/logos/logo.png","apps/web/public/logos/nextbase copy.png","apps/web/public/logos/nextbase-dark-logo.png","apps/web/public/logos/nextbase-light-logo.png","apps/web/public/logos/nextbase.png","apps/web/public/logos/nextbase@2x copy.png","apps/web/public/logos/nextbase@2x.png","apps/web/public/logos/nextbase@3x copy.png","apps/web/public/logos/nextbase@3x.png","apps/web/public/logos/nextbase_navlogo.svg","apps/web/public/logos/nextbase_navlogo_small.svg","apps/web/public/mockups/auth.png","apps/web/public/mockups/layouts.png","apps/web/public/mockups/maintenance-mode.png","apps/web/public/mockups/nst.png","apps/web/public/mockups/orgs-teams.png","apps/web/public/mockups/placeholder.jpeg","apps/web/public/mockups/sign-in-graphic.png","apps/web/public/mockups/stripe-gif.gif","apps/web/public/mockups/stripe-integration.png","apps/web/public/mockups/unstyled-components.png","apps/web/public/mockups/user-impersonation.png","apps/web/public/robots.txt","apps/web/public/sitemap-0.xml","apps/web/public/sitemap.xml","apps/web/public/unit.png","apps/web/src/app/(app-pages)/PrivateItemsList.tsx","apps/web/src/app/(app-pages)/app-sidebar-client.tsx","apps/web/src/app/(app-pages)/app-sidebar.tsx","apps/web/src/app/(app-pages)/dashboard/ClientPage.tsx","apps/web/src/app/(app-pages)/dashboard/dashboard-heading.tsx","apps/web/src/app/(app-pages)/dashboard/dashboard-list-skeleton.tsx","apps/web/src/app/(app-pages)/dashboard/dashboard-private-items-section.tsx","apps/web/src/app/(app-pages)/dashboard/new/page.tsx","apps/web/src/app/(app-pages)/dashboard/page.tsx","apps/web/src/app/(app-pages)/layout.tsx","apps/web/src/app/(app-pages)/private-item/[privateItemId]/ConfirmDeleteItemDialog.tsx","apps/web/src/app/(app-pages)/private-item/[privateItemId]/page.tsx","apps/web/src/app/(app-pages)/private-item/[privateItemId]/private-item-card.tsx","apps/web/src/app/(app-pages)/private-item/[privateItemId]/private-item-skeleton.tsx","apps/web/src/app/(app-pages)/private-item/not-found.tsx","apps/web/src/app/(app-pages)/private-items/page.tsx","apps/web/src/app/(app-pages)/private-items/private-items-header.tsx","apps/web/src/app/(app-pages)/private-items/private-items-list-section.tsx","apps/web/src/app/(app-pages)/private-items/private-items-list-skeleton.tsx","apps/web/src/app/(auth-pages)/auth/auth-code-error/page.tsx","apps/web/src/app/(auth-pages)/auth/callback/route.ts","apps/web/src/app/(auth-pages)/auth/confirm/route.ts","apps/web/src/app/(auth-pages)/forgot-password/ForgotPassword.tsx","apps/web/src/app/(auth-pages)/forgot-password/page.tsx","apps/web/src/app/(auth-pages)/layout.tsx","apps/web/src/app/(auth-pages)/login/Login.tsx","apps/web/src/app/(auth-pages)/login/page.tsx","apps/web/src/app/(auth-pages)/sign-up/Signup.tsx","apps/web/src/app/(auth-pages)/sign-up/page.tsx","apps/web/src/app/(auth-pages)/update-password/UpdatePassword.tsx","apps/web/src/app/(auth-pages)/update-password/page.tsx","apps/web/src/app/(external-pages)/about/about-cta.tsx","apps/web/src/app/(external-pages)/about/about-features-grid.tsx","apps/web/src/app/(external-pages)/about/about-hero.tsx","apps/web/src/app/(external-pages)/about/about-tech-stack.tsx","apps/web/src/app/(external-pages)/about/page.tsx","apps/web/src/app/(external-pages)/home-cta.tsx","apps/web/src/app/(external-pages)/home-features.tsx","apps/web/src/app/(external-pages)/home-hero.tsx","apps/web/src/app/(external-pages)/layout.tsx","apps/web/src/app/(external-pages)/page.tsx","apps/web/src/app/Banner.tsx","apps/web/src/app/ClientLayout.tsx","apps/web/src/app/DynamicLayoutProviders.tsx","apps/web/src/app/LoginNavLink.tsx","apps/web/src/app/MobileNavigation.tsx","apps/web/src/app/NavLink.tsx","apps/web/src/app/Navbar.tsx","apps/web/src/app/layout.tsx","apps/web/src/components/Auth/Email.tsx","apps/web/src/components/Auth/EmailAndPassword.test.tsx","apps/web/src/components/Auth/EmailAndPassword.tsx","apps/web/src/components/Auth/EmailConfirmationPendingCard.tsx","apps/web/src/components/Auth/Icons.tsx","apps/web/src/components/Auth/Password.tsx","apps/web/src/components/Auth/RedirectingPleaseWaitCard.tsx","apps/web/src/components/Auth/RenderProviders.tsx","apps/web/src/components/BlurText.tsx","apps/web/src/components/Footer.tsx","apps/web/src/components/ShinyText.tsx","apps/web/src/components/SpotlightCard.tsx","apps/web/src/components/dynamic-breadcrumb.tsx","apps/web/src/components/ui/Typography/Blockquote.tsx","apps/web/src/components/ui/Typography/H1.tsx","apps/web/src/components/ui/Typography/H2.tsx","apps/web/src/components/ui/Typography/H3.tsx","apps/web/src/components/ui/Typography/H4.tsx","apps/web/src/components/ui/Typography/Large.tsx","apps/web/src/components/ui/Typography/List.tsx","apps/web/src/components/ui/Typography/P.tsx","apps/web/src/components/ui/Typography/Small.tsx","apps/web/src/components/ui/Typography/Subtle.tsx","apps/web/src/components/ui/Typography/index.ts","apps/web/src/components/ui/accordion.tsx","apps/web/src/components/ui/alert-dialog.tsx","apps/web/src/components/ui/alert.tsx","apps/web/src/components/ui/aspect-ratio.tsx","apps/web/src/components/ui/avatar.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/breadcrumb.tsx","apps/web/src/components/ui/button-group.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/calendar.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/carousel.tsx","apps/web/src/components/ui/chart.tsx","apps/web/src/components/ui/checkbox.tsx","apps/web/src/components/ui/collapsible.tsx","apps/web/src/components/ui/command.tsx","apps/web/src/components/ui/context-menu.tsx","apps/web/src/components/ui/dialog.tsx","apps/web/src/components/ui/drawer.tsx","apps/web/src/components/ui/dropdown-menu.tsx","apps/web/src/components/ui/empty.tsx","apps/web/src/components/ui/field.tsx","apps/web/src/components/ui/form.tsx","apps/web/src/components/ui/hover-card.tsx","apps/web/src/components/ui/input-group.tsx","apps/web/src/components/ui/input-otp.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/item.tsx","apps/web/src/components/ui/kbd.tsx","apps/web/src/components/ui/label.tsx","apps/web/src/components/ui/menubar.tsx","apps/web/src/components/ui/mode-toggle.tsx","apps/web/src/components/ui/navigation-menu.tsx","apps/web/src/components/ui/pagination.tsx","apps/web/src/components/ui/popover.tsx","apps/web/src/components/ui/progress.tsx","apps/web/src/components/ui/radio-group.tsx","apps/web/src/components/ui/resizable.tsx","apps/web/src/components/ui/scroll-area.tsx","apps/web/src/components/ui/select.tsx","apps/web/src/components/ui/separator.tsx","apps/web/src/components/ui/sheet.tsx","apps/web/src/components/ui/sidebar.tsx","apps/web/src/components/ui/skeleton.tsx","apps/web/src/components/ui/slider.tsx","apps/web/src/components/ui/sonner.tsx","apps/web/src/components/ui/spinner.tsx","apps/web/src/components/ui/switch.tsx","apps/web/src/components/ui/table.tsx","apps/web/src/components/ui/tabs.tsx","apps/web/src/components/ui/textarea.tsx","apps/web/src/components/ui/toast.tsx","apps/web/src/components/ui/toaster.tsx","apps/web/src/components/ui/toggle-group.tsx","apps/web/src/components/ui/toggle.tsx","apps/web/src/components/ui/tooltip.tsx","apps/web/src/constants.ts","apps/web/src/contexts/RouterProgressionContext.tsx","apps/web/src/data/anon/privateItems.ts","apps/web/src/data/auth/auth.ts","apps/web/src/data/auth/sign-out.ts","apps/web/src/data/user/privateItems.ts","apps/web/src/data/user/security.ts","apps/web/src/data/user/user.ts","apps/web/src/environment.d.ts","apps/web/src/hooks/use-mobile.ts","apps/web/src/hooks/use-toast.ts","apps/web/src/lib/database.types.ts","apps/web/src/lib/safe-action.ts","apps/web/src/lib/utils.ts","apps/web/src/proxy.ts","apps/web/src/rsc-data/supabase.ts","apps/web/src/styles/globals.css","apps/web/src/styles/utils.css","apps/web/src/supabase-clients/client.ts","apps/web/src/supabase-clients/middleware.ts","apps/web/src/supabase-clients/server.ts","apps/web/src/types.ts","apps/web/src/utils/README-effect.md","apps/web/src/utils/classNames.ts","apps/web/src/utils/cn.ts","apps/web/src/utils/createSuspenseResource.ts","apps/web/src/utils/effect-bridge.test.ts","apps/web/src/utils/effect-bridge.ts","apps/web/src/utils/effect-errors.ts","apps/web/src/utils/effect-supabase-queries.ts","apps/web/src/utils/helpers.test.ts","apps/web/src/utils/helpers.ts","apps/web/src/utils/supabase-queries.ts","apps/web/src/utils/zod-schemas/blog.ts","apps/web/tsconfig.json","apps/web/vitest.config.ts","docs/NEXTJS_CACHE_COMPONENTS.md","docs/SUPABASE_GETCLAIMS_AUTHENTICATION.md","oxlint.json","package.json","packages/typescript-config/package.json","packages/typescript-config/tsconfig.base.json","pnpm-lock.yaml","pnpm-workspace.yaml","scripts/sync-release-version.mjs","scripts/sync-supabase-env.ts","setup.sh","tsconfig.json","turbo.json"],"storefront":"/r/imbhargav5","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/imbhargav5/nextbase-nextjs-supabase-starter/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}