setup clerk

This commit is contained in:
suraj.shenoy.b@gmail.com
2025-01-24 23:20:25 -06:00
parent 2d722551f5
commit 398ed7fdbc
4 changed files with 5766 additions and 35 deletions

5727
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -9,6 +9,7 @@
"lint": "next lint" "lint": "next lint"
}, },
"dependencies": { "dependencies": {
"@clerk/nextjs": "^6.10.2",
"@radix-ui/react-slot": "^1.1.1", "@radix-ui/react-slot": "^1.1.1",
"@vercel/analytics": "^1.4.1", "@vercel/analytics": "^1.4.1",
"@vercel/speed-insights": "^1.1.0", "@vercel/speed-insights": "^1.1.0",

View File

@@ -1,38 +1,29 @@
import type { Metadata } from "next"; import {
import { Geist, Geist_Mono } from "next/font/google"; ClerkProvider,
import "./globals.css"; SignInButton,
import { Analytics } from "@vercel/analytics/react"; SignedIn,
import { SpeedInsights } from "@vercel/speed-insights/next"; SignedOut,
UserButton
const geistSans = Geist({ } from '@clerk/nextjs'
variable: "--font-geist-sans", import './globals.css'
subsets: ["latin"],
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
});
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
};
export default function RootLayout({ export default function RootLayout({
children, children,
}: Readonly<{ }: {
children: React.ReactNode; children: React.ReactNode
}>) { }) {
return ( return (
<ClerkProvider>
<html lang="en"> <html lang="en">
<body <body>
className={`${geistSans.variable} ${geistMono.variable} antialiased`} <SignedOut>
> <SignInButton />
<Analytics /> </SignedOut>
<SpeedInsights /> <SignedIn>
<UserButton />
</SignedIn>
{children} {children}
</body> </body>
</html> </html>
); </ClerkProvider>
)
} }

12
src/middleware.ts Normal file
View File

@@ -0,0 +1,12 @@
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)(.*)',
],
};