diff --git a/apps/web/app/api/auth/[...nextauth]/route.ts b/apps/web/app/api/auth/[...nextauth]/route.ts
deleted file mode 100644
index a8ed0a8..0000000
--- a/apps/web/app/api/auth/[...nextauth]/route.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import NextAuth from "next-auth"
-import { authOptions } from "@/lib/auth"
-
-const handler = NextAuth(authOptions)
-
-export { handler as GET, handler as POST }
\ No newline at end of file
diff --git a/apps/web/app/api/auth/signup/route.ts b/apps/web/app/api/auth/signup/route.ts
deleted file mode 100644
index f458e12..0000000
--- a/apps/web/app/api/auth/signup/route.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-import { NextRequest, NextResponse } from "next/server"
-// Use mock client temporarily until Prisma generation works
-import { PrismaClient } from "@collax/prisma/src/mock"
-
-const prisma = new PrismaClient()
-
-export async function POST(req: NextRequest) {
- try {
- const { email, password, name } = await req.json()
-
- if (!email || !password || !name) {
- return NextResponse.json(
- { message: "Missing required fields" },
- { status: 400 }
- )
- }
-
- // Check if user already exists
- const existingUser = await prisma.user.findUnique({
- where: { email }
- })
-
- if (existingUser) {
- return NextResponse.json(
- { message: "User already exists" },
- { status: 400 }
- )
- }
-
- // Create user (in production, hash the password)
- const user = await prisma.user.create({
- data: {
- email,
- name,
- // Note: In production, hash the password before storing
- // password: await bcrypt.hash(password, 12)
- }
- })
-
- return NextResponse.json(
- { message: "User created successfully", userId: user.id },
- { status: 201 }
- )
- } catch (error) {
- console.error("Signup error:", error)
- return NextResponse.json(
- { message: "Internal server error" },
- { status: 500 }
- )
- }
-}
\ No newline at end of file
diff --git a/apps/web/app/auth/signin/page.tsx b/apps/web/app/auth/signin/page.tsx
deleted file mode 100644
index 43021d3..0000000
--- a/apps/web/app/auth/signin/page.tsx
+++ /dev/null
@@ -1,100 +0,0 @@
-"use client"
-
-import { signIn } from "next-auth/react"
-import { Button } from "@collax/ui/components/ui/button"
-import { useState } from "react"
-
-export default function SignIn() {
- const [email, setEmail] = useState("")
- const [password, setPassword] = useState("")
-
- const handleCredentialsSignIn = async (e: React.FormEvent) => {
- e.preventDefault()
- await signIn("credentials", {
- email,
- password,
- callbackUrl: "/",
- })
- }
-
- const handleGoogleSignIn = () => {
- signIn("google", { callbackUrl: "/" })
- }
-
- return (
-
- {/* Navigation Header */}
-
-
- {/* Main Content */}
-
-
-
- Welcome to Collax
-
-
- Your collaborative note-taking platform
-
-
- {session ? (
-
-
- Hello, {session.user?.name || session.user?.email}!
-
-
- You are successfully authenticated. Ready to start taking notes?
-
-
-
-
-
-
-
-
- ) : (
-
-
- Get Started Today
-
-
- Sign up or sign in to start creating and collaborating on notes.
-
-
-
-
-
-
-
-
-
-
- )}
-
-
+
+
Hii
+
)
}
diff --git a/apps/web/components/auth-nav.tsx b/apps/web/components/auth-nav.tsx
deleted file mode 100644
index 05c88af..0000000
--- a/apps/web/components/auth-nav.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-"use client"
-
-import { useSession, signOut } from "next-auth/react"
-import { Button } from "@collax/ui/components/ui/button"
-import Link from "next/link"
-
-export default function AuthNav() {
- const { data: session, status } = useSession()
-
- if (status === "loading") {
- return
Loading...
- }
-
- if (session) {
- return (
-
-
- Welcome, {session.user?.name || session.user?.email}
-
-
-
- )
- }
-
- return (
-
-
-
-
-
-
-
-
- )
-}
\ No newline at end of file
diff --git a/apps/web/components/session-provider.tsx b/apps/web/components/session-provider.tsx
deleted file mode 100644
index 2c3066d..0000000
--- a/apps/web/components/session-provider.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-"use client"
-
-import { SessionProvider as NextAuthSessionProvider } from "next-auth/react"
-import { Session } from "next-auth"
-
-export default function SessionProvider({
- children,
- session,
-}: {
- children: React.ReactNode
- session: Session | null
-}) {
- return (
-
- {children}
-
- )
-}
\ No newline at end of file
diff --git a/apps/web/lib/auth.ts b/apps/web/lib/auth.ts
deleted file mode 100644
index f47b8a2..0000000
--- a/apps/web/lib/auth.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import { NextAuthOptions } from "next-auth"
-// import { PrismaAdapter } from "@next-auth/prisma-adapter"
-import GoogleProvider from "next-auth/providers/google"
-import CredentialsProvider from "next-auth/providers/credentials"
-// Use mock client temporarily until Prisma generation works
-import { PrismaClient } from "@collax/prisma/src/mock"
-
-const prisma = new PrismaClient()
-
-export const authOptions: NextAuthOptions = {
- // adapter: PrismaAdapter(prisma as any), // Temporarily disabled
- providers: [
- GoogleProvider({
- clientId: process.env.GOOGLE_CLIENT_ID || "mock-google-client-id",
- clientSecret: process.env.GOOGLE_CLIENT_SECRET || "mock-google-client-secret",
- }),
- CredentialsProvider({
- name: "credentials",
- credentials: {
- email: { label: "Email", type: "email" },
- password: { label: "Password", type: "password" }
- },
- async authorize(credentials) {
- if (!credentials?.email || !credentials?.password) {
- return null
- }
-
- // For demo purposes, allow any email/password combination
- // In production, you'd verify against a database
- if (credentials.email && credentials.password) {
- return {
- id: "demo-user-id",
- email: credentials.email,
- name: "Demo User",
- image: null,
- }
- }
-
- return null
- }
- })
- ],
- session: {
- strategy: "jwt",
- },
- pages: {
- signIn: "/auth/signin",
- },
- callbacks: {
- async jwt({ token, user }) {
- if (user) {
- token.id = user.id
- }
- return token
- },
- async session({ session, token }) {
- if (token) {
- session.user.id = token.id as string
- }
- return session
- },
- },
-}
\ No newline at end of file
diff --git a/apps/web/middleware.ts b/apps/web/middleware.ts
deleted file mode 100644
index f18d277..0000000
--- a/apps/web/middleware.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { withAuth } from "next-auth/middleware"
-
-export default withAuth(
- function middleware(req) {
- // Add any additional middleware logic here
- },
- {
- callbacks: {
- authorized: ({ token }) => !!token
- },
- }
-)
-
-export const config = {
- matcher: [
- // Protect these routes
- "/dashboard/:path*",
- "/notes/:path*",
- "/profile/:path*"
- ]
-}
\ No newline at end of file
diff --git a/apps/web/package.json b/apps/web/package.json
index a22fe76..0acfe7c 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -12,23 +12,21 @@
},
"dependencies": {
"@collax/ui": "workspace:*",
- "@next-auth/prisma-adapter": "^1.0.7",
"next": "^15.3.0",
- "next-auth": "^4.24.11",
"react": "^19.1.0",
"react-dom": "^19.1.0"
},
"devDependencies": {
"@collax/eslint-config": "workspace:*",
- "@collax/prisma": "workspace:*",
"@collax/typescript-config": "workspace:*",
+ "@collax/prisma": "workspace:*",
"@types/node": "^22.15.3",
"@types/react": "19.1.0",
"@types/react-dom": "19.1.1",
- "autoprefixer": "^10",
"eslint": "^9.27.0",
+ "typescript": "5.8.2",
+ "autoprefixer": "^10",
"postcss": "^8",
- "tailwindcss": "^3.4.13",
- "typescript": "5.8.2"
+ "tailwindcss": "^3.4.13"
}
}
diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json
index 4bad9f7..985ec1f 100644
--- a/apps/web/tsconfig.json
+++ b/apps/web/tsconfig.json
@@ -5,10 +5,7 @@
{
"name": "next"
}
- ],
- "paths": {
- "@/*": ["./*"]
- }
+ ]
},
"include": [
"**/*.ts",
diff --git a/apps/web/types/next-auth.d.ts b/apps/web/types/next-auth.d.ts
deleted file mode 100644
index a716218..0000000
--- a/apps/web/types/next-auth.d.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import NextAuth from "next-auth"
-
-declare module "next-auth" {
- interface Session {
- user: {
- id: string
- name?: string | null
- email?: string | null
- image?: string | null
- }
- }
-
- interface User {
- id: string
- name?: string | null
- email?: string | null
- image?: string | null
- }
-}
-
-declare module "next-auth/jwt" {
- interface JWT {
- id: string
- }
-}
\ No newline at end of file
diff --git a/docs/AUTHENTICATION.md b/docs/AUTHENTICATION.md
deleted file mode 100644
index a03fa9f..0000000
--- a/docs/AUTHENTICATION.md
+++ /dev/null
@@ -1,177 +0,0 @@
-# Authentication Setup
-
-This document describes the authentication system implemented in the Collax application.
-
-## Overview
-
-Collax uses NextAuth.js (v4) for comprehensive authentication with support for:
-- **Google OAuth** - Social login with Google accounts
-- **Email/Password** - Traditional credentials-based authentication
-- **JWT Sessions** - Secure, stateless session management
-- **Protected Routes** - Middleware-based route protection
-
-## Features
-
-### 🔐 **Multiple Authentication Methods**
-- Google OAuth integration (production-ready with proper credentials)
-- Email/password authentication (demo implementation)
-- Extensible provider system for adding more auth methods
-
-### 🛡️ **Security Features**
-- JWT-based sessions for scalability
-- CSRF protection built-in with NextAuth.js
-- Secure cookie handling
-- Environment-based configuration
-
-### 🎨 **User Experience**
-- Clean, responsive authentication UI
-- Automatic redirects after authentication
-- Persistent sessions across browser refreshes
-- Clear authentication status in navigation
-
-### 🛣️ **Route Protection**
-- Middleware-based protection for sensitive routes
-- Automatic redirect to sign-in for unauthenticated users
-- Callback URL preservation for seamless UX
-
-## Files Structure
-
-### Core Authentication
-- `apps/web/lib/auth.ts` - NextAuth.js configuration
-- `apps/web/app/api/auth/[...nextauth]/route.ts` - NextAuth.js API routes
-- `apps/web/middleware.ts` - Route protection middleware
-
-### UI Components
-- `apps/web/components/session-provider.tsx` - Session context provider
-- `apps/web/components/auth-nav.tsx` - Authentication navigation component
-- `apps/web/app/auth/signin/page.tsx` - Sign-in page
-- `apps/web/app/auth/signup/page.tsx` - Sign-up page
-
-### Database Schema
-- `packages/prisma/prisma/schema.prisma` - User, Account, Session models
-
-### Configuration
-- `apps/web/.env.example` - Environment variables template
-- `apps/web/types/next-auth.d.ts` - TypeScript type definitions
-
-## Environment Setup
-
-Copy the environment template and configure:
-
-```bash
-cp apps/web/.env.example apps/web/.env.local
-```
-
-Required environment variables:
-```env
-NEXTAUTH_URL=http://localhost:3000
-NEXTAUTH_SECRET=your-secret-key
-
-# Optional: Google OAuth
-GOOGLE_CLIENT_ID=your-google-client-id
-GOOGLE_CLIENT_SECRET=your-google-client-secret
-
-# Database (when Prisma adapter is enabled)
-DATABASE_URL="postgresql://username:password@localhost:5432/collax"
-```
-
-## Protected Routes
-
-The following routes are automatically protected by middleware:
-- `/dashboard/*` - User dashboard and related pages
-- `/notes/*` - Note management pages
-- `/profile/*` - User profile pages
-
-Add more protected routes by updating the `matcher` config in `apps/web/middleware.ts`.
-
-## Usage Examples
-
-### Check Authentication Status
-```tsx
-import { useSession } from "next-auth/react"
-
-function MyComponent() {
- const { data: session, status } = useSession()
-
- if (status === "loading") return
Loading...
- if (status === "unauthenticated") return
Please sign in
-
- return
Welcome, {session.user.name}!
-}
-```
-
-### Server-Side Authentication
-```tsx
-import { getServerSession } from "next-auth"
-import { authOptions } from "@/lib/auth"
-
-export default async function Page() {
- const session = await getServerSession(authOptions)
-
- if (!session) {
- return
Please sign in
- }
-
- return
Hello, {session.user.name}!
-}
-```
-
-### Programmatic Sign In/Out
-```tsx
-import { signIn, signOut } from "next-auth/react"
-
-// Sign in with credentials
-await signIn("credentials", {
- email: "user@example.com",
- password: "password",
- callbackUrl: "/dashboard"
-})
-
-// Sign in with Google
-await signIn("google", { callbackUrl: "/dashboard" })
-
-// Sign out
-await signOut({ callbackUrl: "/" })
-```
-
-## Production Deployment
-
-### Google OAuth Setup
-1. Go to [Google Cloud Console](https://console.cloud.google.com/)
-2. Create a new project or select existing
-3. Enable Google+ API
-4. Create OAuth 2.0 credentials
-5. Add authorized redirect URIs:
- - `https://yourdomain.com/api/auth/callback/google`
-6. Set environment variables with real credentials
-
-### Database Setup
-1. Set up PostgreSQL database
-2. Update `DATABASE_URL` in environment
-3. Run Prisma migrations:
- ```bash
- pnpm migrate:dev
- pnpm generate
- ```
-
-### Security Considerations
-- Use a strong, random `NEXTAUTH_SECRET` in production
-- Enable HTTPS for all authentication flows
-- Configure proper CORS settings
-- Implement rate limiting for auth endpoints
-- Regular security audits and dependency updates
-
-## Current Implementation Notes
-
-- **Demo Mode**: Currently using mock Prisma client due to development environment limitations
-- **Password Hashing**: In production, implement proper password hashing with bcrypt
-- **Database Integration**: Full Prisma integration ready when database is available
-- **Email Verification**: Can be added with email provider configuration
-
-## Next Steps
-
-1. **Database Integration**: Connect to real PostgreSQL database
-2. **Email Provider**: Add email verification and password reset
-3. **Role-Based Access**: Implement user roles and permissions
-4. **Security Enhancements**: Add rate limiting, password policies
-5. **Social Providers**: Add more OAuth providers (GitHub, Discord, etc.)
\ No newline at end of file
diff --git a/packages/prisma/prisma/schema.prisma b/packages/prisma/prisma/schema.prisma
index c9324d9..aaeee1b 100644
--- a/packages/prisma/prisma/schema.prisma
+++ b/packages/prisma/prisma/schema.prisma
@@ -13,57 +13,3 @@ datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
-
-// NextAuth.js Models
-// NOTE: When using postgresql, mysql or sqlserver,
-// uncomment the @db.Text annotations in model Account below
-// Further reading:
-// https://next-auth.js.org/schemas/models
-// https://next-auth.js.org/schemas/adapters
-
-model Account {
- id String @id @default(cuid())
- userId String
- type String
- provider String
- providerAccountId String
- refresh_token String? @db.Text
- access_token String? @db.Text
- expires_at Int?
- token_type String?
- scope String?
- id_token String? @db.Text
- session_state String?
-
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
-
- @@unique([provider, providerAccountId])
-}
-
-model Session {
- id String @id @default(cuid())
- sessionToken String @unique
- userId String
- expires DateTime
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
-}
-
-model User {
- id String @id @default(cuid())
- name String?
- email String @unique
- emailVerified DateTime?
- image String?
- createdAt DateTime @default(now())
- updatedAt DateTime @updatedAt
- accounts Account[]
- sessions Session[]
-}
-
-model VerificationToken {
- identifier String
- token String @unique
- expires DateTime
-
- @@unique([identifier, token])
-}
diff --git a/packages/prisma/src/mock.ts b/packages/prisma/src/mock.ts
deleted file mode 100644
index df3e321..0000000
--- a/packages/prisma/src/mock.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-// Temporary mock Prisma client for development
-// This will be replaced once the actual Prisma client is generated
-
-export interface User {
- id: string
- email: string
- name?: string | null
- image?: string | null
- emailVerified?: Date | null
- createdAt: Date
- updatedAt: Date
-}
-
-export interface Account {
- id: string
- userId: string
- type: string
- provider: string
- providerAccountId: string
- refresh_token?: string | null
- access_token?: string | null
- expires_at?: number | null
- token_type?: string | null
- scope?: string | null
- id_token?: string | null
- session_state?: string | null
-}
-
-export interface Session {
- id: string
- sessionToken: string
- userId: string
- expires: Date
-}
-
-export interface VerificationToken {
- identifier: string
- token: string
- expires: Date
-}
-
-// Mock PrismaClient
-export class PrismaClient {
- user = {
- findUnique: async ({ where }: { where: { email?: string; id?: string } }) => {
- // Mock implementation - in development, return null to prevent errors
- return null
- },
- create: async ({ data }: { data: Partial
}) => {
- // Mock implementation
- return {
- id: "mock-id",
- email: data.email!,
- name: data.name || null,
- image: null,
- emailVerified: null,
- createdAt: new Date(),
- updatedAt: new Date(),
- }
- }
- }
-
- account = {
- // Mock account methods
- }
-
- session = {
- // Mock session methods
- }
-
- verificationToken = {
- // Mock verification token methods
- }
-}
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6346c05..1ba6c87 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -60,15 +60,9 @@ importers:
'@collax/ui':
specifier: workspace:*
version: link:../../packages/ui
- '@next-auth/prisma-adapter':
- specifier: ^1.0.7
- version: 1.0.7(@prisma/client@6.8.2(prisma@6.8.2(typescript@5.8.2))(typescript@5.8.2))(next-auth@4.24.11(next@15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))
next:
specifier: ^15.3.0
version: 15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- next-auth:
- specifier: ^4.24.11
- version: 4.24.11(next@15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react:
specifier: ^19.1.0
version: 19.1.0
@@ -94,18 +88,9 @@ importers:
'@types/react-dom':
specifier: 19.1.1
version: 19.1.1(@types/react@19.1.0)
- autoprefixer:
- specifier: ^10
- version: 10.4.21(postcss@8.5.6)
eslint:
specifier: ^9.27.0
version: 9.27.0(jiti@2.4.2)
- postcss:
- specifier: ^8
- version: 8.5.6
- tailwindcss:
- specifier: ^3.4.13
- version: 3.4.17(ts-node@10.9.2(@types/node@22.15.3)(typescript@5.8.2))
typescript:
specifier: 5.8.2
version: 5.8.2
@@ -238,10 +223,6 @@ packages:
resolution: {integrity: sha512-UWjX6t+v+0ckwZ50Y5ShZLnlk95pP5MyW/pon9tiYzl3+18pkTHTFNTKr7rQbfRXPkowt2QAn30o1b6oswszew==}
engines: {node: '>=6.9.0'}
- '@babel/runtime@7.28.2':
- resolution: {integrity: sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==}
- engines: {node: '>=6.9.0'}
-
'@cspotcode/source-map-support@0.8.1':
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
engines: {node: '>=12'}
@@ -437,12 +418,6 @@ packages:
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
- '@next-auth/prisma-adapter@1.0.7':
- resolution: {integrity: sha512-Cdko4KfcmKjsyHFrWwZ//lfLUbcLqlyFqjd/nYE2m3aZ7tjMNUjpks47iw7NTCnXf+5UWz5Ypyt1dSs1EP5QJw==}
- peerDependencies:
- '@prisma/client': '>=2.26.0 || >=3'
- next-auth: ^4
-
'@next/env@15.3.0':
resolution: {integrity: sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==}
@@ -509,9 +484,6 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@panva/hkdf@1.2.1':
- resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==}
-
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -939,10 +911,6 @@ packages:
constant-case@2.0.0:
resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==}
- cookie@0.7.2:
- resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
- engines: {node: '>= 0.6'}
-
core-js-pure@3.41.0:
resolution: {integrity: sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==}
@@ -1297,7 +1265,6 @@ packages:
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
@@ -1585,9 +1552,6 @@ packages:
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
hasBin: true
- jose@4.15.9:
- resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==}
-
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -1660,10 +1624,6 @@ packages:
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
- lru-cache@6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
- engines: {node: '>=10'}
-
lru-cache@7.18.3:
resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
engines: {node: '>=12'}
@@ -1724,7 +1684,6 @@ packages:
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
@@ -1736,20 +1695,6 @@ packages:
resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==}
engines: {node: '>= 0.4.0'}
- next-auth@4.24.11:
- resolution: {integrity: sha512-pCFXzIDQX7xmHFs4KVH4luCjaCbuPRtZ9oBUjUhOk84mZ9WVPf94n87TxYI4rSRf9HmfHEF8Yep3JrYDVOo3Cw==}
- peerDependencies:
- '@auth/core': 0.34.2
- next: ^12.2.5 || ^13 || ^14 || ^15
- nodemailer: ^6.6.5
- react: ^17.0.2 || ^18 || ^19
- react-dom: ^17.0.2 || ^18 || ^19
- peerDependenciesMeta:
- '@auth/core':
- optional: true
- nodemailer:
- optional: true
-
next@15.3.0:
resolution: {integrity: sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ==}
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
@@ -1793,17 +1738,10 @@ packages:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
- oauth@0.9.15:
- resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==}
-
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
- object-hash@2.2.0:
- resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
- engines: {node: '>= 6'}
-
object-hash@3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
@@ -1832,10 +1770,6 @@ packages:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
- oidc-token-hash@5.1.0:
- resolution: {integrity: sha512-y0W+X7Ppo7oZX6eovsRkuzcSM40Bicg2JEJkDJ4irIt1wsYAP5MLSNv+QAogO8xivMffw/9OvV3um1pxXgt1uA==}
- engines: {node: ^10.13.0 || >=12.0.0}
-
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@@ -1843,9 +1777,6 @@ packages:
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
engines: {node: '>=6'}
- openid-client@5.7.1:
- resolution: {integrity: sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==}
-
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
@@ -2010,14 +1941,6 @@ packages:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
- preact-render-to-string@5.2.6:
- resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==}
- peerDependencies:
- preact: '>=10'
-
- preact@10.27.0:
- resolution: {integrity: sha512-/DTYoB6mwwgPytiqQTh/7SFRL98ZdiD8Sk8zIUVOxtwq4oWcwrcd1uno9fE/zZmUaUrFNYzbH14CPebOz9tZQw==}
-
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
@@ -2026,9 +1949,6 @@ packages:
resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==}
engines: {node: '>=14'}
- pretty-format@3.8.0:
- resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==}
-
prisma@6.8.2:
resolution: {integrity: sha512-JNricTXQxzDtRS7lCGGOB4g5DJ91eg3nozdubXze3LpcMl1oWwcFddrj++Up3jnRE6X/3gB/xz3V+ecBk/eEGA==}
engines: {node: '>=18.18'}
@@ -2517,10 +2437,6 @@ packages:
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- uuid@8.3.2:
- resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
- hasBin: true
-
v8-compile-cache-lib@3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
@@ -2573,9 +2489,6 @@ packages:
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- yallist@4.0.0:
- resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
-
yaml@2.8.0:
resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==}
engines: {node: '>= 14.6'}
@@ -2598,8 +2511,6 @@ snapshots:
core-js-pure: 3.41.0
regenerator-runtime: 0.14.1
- '@babel/runtime@7.28.2': {}
-
'@cspotcode/source-map-support@0.8.1':
dependencies:
'@jridgewell/trace-mapping': 0.3.9
@@ -2772,11 +2683,6 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
- '@next-auth/prisma-adapter@1.0.7(@prisma/client@6.8.2(prisma@6.8.2(typescript@5.8.2))(typescript@5.8.2))(next-auth@4.24.11(next@15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0))':
- dependencies:
- '@prisma/client': 6.8.2(prisma@6.8.2(typescript@5.8.2))(typescript@5.8.2)
- next-auth: 4.24.11(next@15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
-
'@next/env@15.3.0': {}
'@next/eslint-plugin-next@15.3.0':
@@ -2819,16 +2725,9 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.19.1
- '@panva/hkdf@1.2.1': {}
-
'@pkgjs/parseargs@0.11.0':
optional: true
- '@prisma/client@6.8.2(prisma@6.8.2(typescript@5.8.2))(typescript@5.8.2)':
- optionalDependencies:
- prisma: 6.8.2(typescript@5.8.2)
- typescript: 5.8.2
-
'@prisma/client@6.8.2(prisma@6.8.2(typescript@5.8.3))(typescript@5.8.3)':
optionalDependencies:
prisma: 6.8.2(typescript@5.8.3)
@@ -3154,23 +3053,13 @@ snapshots:
autoprefixer@10.4.21(postcss@8.4.31):
dependencies:
browserslist: 4.25.1
- caniuse-lite: 1.0.30001731
+ caniuse-lite: 1.0.30001713
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.1.1
postcss: 8.4.31
postcss-value-parser: 4.2.0
- autoprefixer@10.4.21(postcss@8.5.6):
- dependencies:
- browserslist: 4.25.1
- caniuse-lite: 1.0.30001731
- fraction.js: 4.3.7
- normalize-range: 0.1.2
- picocolors: 1.1.1
- postcss: 8.5.6
- postcss-value-parser: 4.2.0
-
available-typed-arrays@1.0.7:
dependencies:
possible-typed-array-names: 1.1.0
@@ -3354,8 +3243,6 @@ snapshots:
snake-case: 2.1.0
upper-case: 1.1.3
- cookie@0.7.2: {}
-
core-js-pure@3.41.0: {}
create-require@1.1.1: {}
@@ -4165,8 +4052,6 @@ snapshots:
jiti@2.4.2: {}
- jose@4.15.9: {}
-
js-tokens@4.0.0: {}
js-yaml@4.1.0:
@@ -4238,10 +4123,6 @@ snapshots:
lru-cache@10.4.3: {}
- lru-cache@6.0.0:
- dependencies:
- yallist: 4.0.0
-
lru-cache@7.18.3: {}
lucide-react@0.451.0(react@19.1.0):
@@ -4297,21 +4178,6 @@ snapshots:
netmask@2.0.2: {}
- next-auth@4.24.11(next@15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
- dependencies:
- '@babel/runtime': 7.28.2
- '@panva/hkdf': 1.2.1
- cookie: 0.7.2
- jose: 4.15.9
- next: 15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- oauth: 0.9.15
- openid-client: 5.7.1
- preact: 10.27.0
- preact-render-to-string: 5.2.6(preact@10.27.0)
- react: 19.1.0
- react-dom: 19.1.0(react@19.1.0)
- uuid: 8.3.2
-
next@15.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
dependencies:
'@next/env': 15.3.0
@@ -4365,12 +4231,8 @@ snapshots:
dependencies:
path-key: 3.1.1
- oauth@0.9.15: {}
-
object-assign@4.1.1: {}
- object-hash@2.2.0: {}
-
object-hash@3.0.0: {}
object-inspect@1.13.4: {}
@@ -4406,8 +4268,6 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
- oidc-token-hash@5.1.0: {}
-
once@1.4.0:
dependencies:
wrappy: 1.0.2
@@ -4416,13 +4276,6 @@ snapshots:
dependencies:
mimic-fn: 2.1.0
- openid-client@5.7.1:
- dependencies:
- jose: 4.15.9
- lru-cache: 6.0.0
- object-hash: 2.2.0
- oidc-token-hash: 5.1.0
-
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -4591,27 +4444,10 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
- preact-render-to-string@5.2.6(preact@10.27.0):
- dependencies:
- preact: 10.27.0
- pretty-format: 3.8.0
-
- preact@10.27.0: {}
-
prelude-ls@1.2.1: {}
prettier@3.5.3: {}
- pretty-format@3.8.0: {}
-
- prisma@6.8.2(typescript@5.8.2):
- dependencies:
- '@prisma/config': 6.8.2
- '@prisma/engines': 6.8.2
- optionalDependencies:
- typescript: 5.8.2
- optional: true
-
prisma@6.8.2(typescript@5.8.3):
dependencies:
'@prisma/config': 6.8.2
@@ -5214,8 +5050,6 @@ snapshots:
util-deprecate@1.0.2: {}
- uuid@8.3.2: {}
-
v8-compile-cache-lib@3.0.1: {}
validate-npm-package-name@5.0.1: {}
@@ -5292,8 +5126,6 @@ snapshots:
wrappy@1.0.2: {}
- yallist@4.0.0: {}
-
yaml@2.8.0: {}
yn@3.1.1: {}