界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
数据与研究 · SKILL.md

opinionated-nextjs-patterns

opinionated-nextjs-patterns

【数据与研究】Opinionated, backend-agnostic Next.js 16 (App Router) architecture — authorization at the data layer, server-side loading with cache()+Promise.all, mutations through next-safe-action + typed route handlers, client/server boundaries ('use client' at leaves + TanStack Query), forms with RHF + Zod, UI via shadcn/ui + Tailwind + Base UI + next-intl, requ…

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: opinionated-nextjs-patterns description: Opinionated, backend-agnostic Next.js 16 (App Router) architecture — authorization at the data layer, server-side loading with cache()+Promise.all, mutations through next-safe-action + typed route handlers, client/server boundaries ('use client' at leaves + TanStack Query), forms with RHF + Zod, UI via shadcn/ui + Tailwind + Base UI + next-intl, request handling in proxy.ts (Next.js 16's renamed middleware), and a Turbo monorepo of @app/* packages confining the backend behind one data-access package. Examples use Supabase but every rule states the transferable principle. Use when writing, reviewing, or refactoring Next.js 16 code. Trigger on server actions, route handlers, RSC vs 'use client' placement, TanStack Query, RHF/Zod, proxy.ts, or monorepo package layout — even when the user doesn't say 'patterns' or 'best practices'.

Opinionated Next.js 16 Patterns

Implementation-pattern reference for Next.js 16 (App Router) codebases that want a single, opinionated architecture. Contains 50 rules across 8 categories, prioritised by execution-lifecycle cascade impact — authorization and (optional) tenant modeling first, then the request boundary, server fetching, mutations, client boundaries, architecture, and UI conventions.

The rules are backend-agnostic in principle but use Supabase as the concrete example. Each rule teaches the transferable idea (e.g. "authorize at the data layer", "read through a typed repository"); where the backend genuinely matters, a *Transferable:* note explains the pattern for other stores (Drizzle, Prisma). The structure is a Turbo monorepo with @app/* packages you own — built on canonical libraries (next-safe-action, @supabase/ssr, @tanstack/react-query, react-hook-form + zod, shadcn/ui, next-intl, pino), not a vendored starter kit.

When to Apply

Reach for these rules when:

  • Writing new code — pages, layouts, server actions, route handlers, proxy.ts, feature packages, client components, hooks, the data-access package, SQL/migrations, forms.
  • Reviewing a PR — authorization slips (privileged client without a guard, missing 'server-only'), waterfalls (sequential awaits, client-fetching server data), drift (hand-edited generated types, deep package imports, hardcoded i18n strings).
  • Refactoring — moving code between apps/web and packages/*, splitting actions and services, lifting 'use client' boundaries, replacing raw queries with a typed data-access factory, swapping a backend behind the data-access package.
  • Designing a feature — choosing the right client (request-scoped vs privileged vs browser), deciding action vs route handler, planning the form/server-action contract, scoping a tenant (if multi-tenant).
  • Onboarding — understanding why the codebase looks the way it does, with concrete, transferable examples.

Rule Categories by Priority

PriorityCategoryImpactPrefix
1Authorization & Data-Layer AccessCRITICALauth-
2Multi-Tenancy (optional, SaaS only)CRITICALtenant-
3Request Boundary (Proxy)HIGHproxy-
4Server-Side Data LoadingHIGHserver-
5Mutations: Actions & Route HandlersHIGHmutate-
6Client/Server BoundariesMEDIUM-HIGHclient-
7Architecture & ServicesMEDIUMarch-
8Forms & UI ConventionsMEDIUMui-

Quick Reference

1. Authorization & Data-Layer Access (CRITICAL)

2. Multi-Tenancy (CRITICAL — optional, SaaS only)

3. Request Boundary: Proxy (HIGH)

4. Server-Side Data Loading (HIGH)

5. Mutations: Actions & Route Handlers (HIGH)

6. Client/Server Boundaries (MEDIUM-HIGH)

7. Architecture & Services (MEDIUM)

8. Forms & UI Conventions (MEDIUM)

How to Use

Read individual reference files for detailed explanations and code examples:

Reference Files

FileDescription
references/_sections.mdCategory definitions and ordering by lifecycle impact
assets/templates/_template.mdTemplate for adding new rules
metadata.jsonVersion, organization, references

Related Skills

  • base-ui-migrator — bulk-migrate Radix asChild patterns to Base UI render props.
  • tailwind-refactor — refactor hardcoded colors to semantic tokens.
  • react-optimise — performance optimisations for React components.
  • nextjs-bundle-optimizer — bundle analysis and reduction for Next.js apps.
我的收藏