Repository: clerk/clerk-nextjs-app-quickstart Branch: main Commit: 4e80676826b6 Files: 12 Total size: 11.1 KB Directory structure: gitextract_fqdx7o29/ ├── .env.example ├── .gitignore ├── README.md ├── app/ │ ├── globals.css │ ├── layout.tsx │ └── page.tsx ├── eslint.config.js ├── next.config.ts ├── package.json ├── postcss.config.mjs ├── proxy.ts └── tsconfig.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .env.example ================================================ # Visit https://dashboard.clerk.com/~/api-keys to find your API Keys NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY= CLERK_SECRET_KEY= ================================================ FILE: .gitignore ================================================ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules /.pnp .pnp.* .yarn/* !.yarn/patches !.yarn/plugins !.yarn/releases !.yarn/versions # testing /coverage # next.js /.next/ /out/ # production /build # misc .DS_Store *.pem # debug npm-debug.log* yarn-debug.log* yarn-error.log* .pnpm-debug.log* # env files (can opt-in for committing if needed) .env* !.env.example # vercel .vercel # typescript *.tsbuildinfo next-env.d.ts # clerk configuration (can include secrets) /.clerk/ ================================================ FILE: README.md ================================================

Clerk Logo for light background

Clerk and Next.js App Router Quickstart

Downloads Discord Twitter

Clerk Hero Image
## Introduction Clerk is a developer-first authentication and user management solution. It provides pre-built React components and hooks for sign-in, sign-up, user profile, and organization management. Clerk is designed to be easy to use and customize, and can be dropped into any React or Next.js application. After following the quickstart you'll have learned how to: - Install `@clerk/nextjs` - Add `clerkMiddleware()` - Add `` and Clerk components - Create your first user ## Deploy Easily deploy the template to Vercel with the button below. You will need to set the required environment variables in the Vercel dashboard. [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fclerk%2Fclerk-nextjs-app-quickstart&env=NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY,CLERK_SECRET_KEY&envDescription=Clerk%20API%20keys&envLink=https%3A%2F%2Fclerk.com%2Fdocs%2Fquickstart%2Fnextjs&redirect-url=https%3A%2F%2Fclerk.com%2Fdocs%2Fquickstart%2Fnextjs) ## Running the template ```bash git clone https://github.com/clerk/clerk-nextjs-app-quickstart ``` To run the example locally, you need to: 1. `npm install` the required dependencies. You may need to use `--force` to handle dependency issues from the React release candidate. 1. `npm run dev` to launch the development server. 1. Select the "Sign in" button in the top-right corner of the app's homepage. ## Learn more To learn more about Clerk and Next.js, check out the following resources: - [Quickstart: Get started with Next.js and Clerk](https://clerk.com/docs/quickstarts/nextjs?utm_source=DevRel&utm_medium=docs&utm_campaign=templates&utm_content=clerk-nextjs-app-quickstart) - [Clerk Documentation](https://clerk.com/docs?utm_source=DevRel&utm_medium=docs&utm_campaign=templates&utm_content=clerk-nextjs-app-quickstart) - [Next.js Documentation](https://nextjs.org/docs) ## Found an issue or want to leave feedback Feel free to create a support thread on our [Discord](https://clerk.com/discord). Our support team will be happy to assist you in the `#support` channel. ## Connect with us You can discuss ideas, ask questions, and meet others from the community in our [Discord](https://discord.com/invite/b5rXHjAg7A). If you prefer, you can also find support through our [Twitter](https://twitter.com/ClerkDev), or you can [email](mailto:support@clerk.dev) us! ================================================ FILE: app/globals.css ================================================ @layer theme, base, clerk, components, utilities; @import 'tailwindcss'; :root { --background: #ffffff; --foreground: #171717; } @media (prefers-color-scheme: dark) { :root { --background: #0a0a0a; --foreground: #ededed; } } body { color: var(--foreground); background: var(--background); font-family: Arial, Helvetica, sans-serif; } ================================================ FILE: app/layout.tsx ================================================ import type { Metadata } from 'next' import { ClerkProvider, SignInButton, SignUpButton, Show, UserButton } from '@clerk/nextjs' import './globals.css' export const metadata: Metadata = { title: 'Clerk Next.js Quickstart', description: 'Generated by create next app', } export default function RootLayout({ children }: { children: React.ReactNode }) { return (
{children}
) } ================================================ FILE: app/page.tsx ================================================ import Image from "next/image"; export default function Home() { return (
Next.js logo
  1. Get started by editing{" "} app/page.tsx .
  2. Save and see your changes instantly.
Vercel logomark Deploy now Read our docs
); } ================================================ FILE: eslint.config.js ================================================ import { defineConfig } from "eslint/config" export default defineConfig([{ extends: [ "next/core-web-vitals", "next/typescript" ] }]) ================================================ FILE: next.config.ts ================================================ import type { NextConfig } from "next"; const nextConfig: NextConfig = { /* config options here */ }; export default nextConfig; ================================================ FILE: package.json ================================================ { "name": "clerk-nextjs-app-quickstart", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "eslint ." }, "dependencies": { "@clerk/nextjs": "^7.2.2", "next": "^16.0.7", "react": "^19.2.1", "react-dom": "^19.2.1" }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", "@tailwindcss/postcss": "^4.1.16", "@types/node": "^24", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "eslint": "^9.38.0", "eslint-config-next": "16.0.0", "postcss": "^8", "tailwindcss": "^4.1.16", "typescript": "^5" } } ================================================ FILE: postcss.config.mjs ================================================ /** @type {import('postcss-load-config').Config} */ const config = { plugins: { '@tailwindcss/postcss': {}, }, }; export default config; ================================================ FILE: proxy.ts ================================================ import { clerkMiddleware } from '@clerk/nextjs/server' export default clerkMiddleware() export const config = { matcher: [ // Skip Next.js internals and all static files, unless found in search params '/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)', // Always run for API routes '/(api|trpc)(.*)', ], } ================================================ FILE: tsconfig.json ================================================ { "compilerOptions": { "target": "ES2017", "lib": [ "dom", "dom.iterable", "esnext" ], "allowJs": true, "skipLibCheck": true, "strict": true, "noEmit": true, "esModuleInterop": true, "module": "esnext", "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "jsx": "react-jsx", "incremental": true, "plugins": [ { "name": "next" } ], "paths": { "@/*": [ "./*" ] } }, "include": [ "next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts" ], "exclude": [ "node_modules" ] }