Search documentation

Search pages and headings in the docs.

Web Service Stack

Shared conventions for 1chooo.com and JustHold. Project overlays add design systems, i18n, and product-specific UI — follow those after this skill.

Stack

LayerChoice
FrameworkNext.js 16 App Router, React 19
LanguageTypeScript
StylingTailwind CSS v4, cn() (clsx + tailwind-merge)
Auth + DBSupabase (@supabase/ssr, Postgres, RLS)
Package managerpnpm
ContentMDX; assets often on Cloudflare R2

Three shells

Every app has three layout zones. Pick the matching shell; do not mix marketing chrome into member/admin.

ShellRole
PublicMarketing, blog, landing — site header/footer
AuthenticatedMember / services workspace — sidebar or workspace shell
AdminRole-gated dashboard — admin chrome; often English-only

Where to put code

NeedLocation
Domain helpers, formatters, constantslib/
Auth helpers (server-only)utils/auth.ts or lib/auth.ts
Supabase clientsutils/supabase/{server,client,service}.ts
Shared UI primitives@justhold/ui (packages/ui, CVA + cn())
Feature-local componentsapp/.../_components/ or feature folders
REST handlersapp/api/<namespace>/
Early session refresh + CORSroot proxy.ts
DB schema referencesupabase/ (migrations / schema.sql)

Core conventions

  • Imports: @/ path alias — avoid ../ across directories.
  • Named exports for components and utilities; default exports only for Next.js page.tsx / layout.tsx and MDX.
  • Server Components by default"use client" only for state, effects, browser APIs, or Context consumers.
  • Async params (Next.js 16): always await params / searchParams — they are Promises.
  • proxy.ts not middleware.ts — Next.js 16 root proxy for session refresh and API CORS. Do not add a root middleware.ts.
  • UI tokens: use semantic theme classes / CSS variables — never hardcode hex/oklch in components.
  • Icons: lucide-react with size-* (not h-*/w-*); aria-hidden="true" when decorative.
  • MDX: keep article bodies separate from metadata (frontmatter export or CMS/DB headers).

Commands (typical)

ActionCommand
Installpnpm install
Devpnpm dev
Buildpnpm build
Lintpnpm lint

Project overlays

After this skill, apply the app-specific package:

  • 1chooo.com1chooo-project and related UI/API skills
  • JustHoldjusthold-project, justhold-i18n, justhold-design-tokens, justhold-ui-layout