Update Dockerfile and Next.js configuration; enhance contact components
- Modify Dockerfile to install curl without recommended packages for a leaner image. - Update Next.js configuration to set outputFileTracingRoot for better Docker compatibility. - Revise contact components to improve messaging and clarity, changing "Get In Touch" to "Contact Me" and enhancing descriptions for collaboration opportunities. - Clean up Prisma schema by removing unnecessary comments and restructuring the Project model for clarity.
This commit is contained in:
@@ -1,6 +1,3 @@
|
||||
// This is your Prisma schema file,
|
||||
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
@@ -11,46 +8,37 @@ datasource db {
|
||||
}
|
||||
|
||||
model Project {
|
||||
id Int @id @default(autoincrement())
|
||||
title String @db.VarChar(255)
|
||||
description String @db.Text
|
||||
content String @db.Text
|
||||
tags String[] @default([])
|
||||
featured Boolean @default(false)
|
||||
category String @db.VarChar(100)
|
||||
date String @db.VarChar(10)
|
||||
github String? @db.VarChar(500)
|
||||
live String? @db.VarChar(500)
|
||||
published Boolean @default(true)
|
||||
imageUrl String? @db.VarChar(500)
|
||||
metaDescription String? @db.Text
|
||||
keywords String? @db.Text
|
||||
ogImage String? @db.VarChar(500)
|
||||
schema Json?
|
||||
|
||||
// Advanced features
|
||||
difficulty Difficulty @default(INTERMEDIATE)
|
||||
timeToComplete String? @db.VarChar(100)
|
||||
technologies String[] @default([])
|
||||
challenges String[] @default([])
|
||||
lessonsLearned String[] @default([])
|
||||
futureImprovements String[] @default([])
|
||||
demoVideo String? @db.VarChar(500)
|
||||
screenshots String[] @default([])
|
||||
colorScheme String @db.VarChar(100) @default("Dark")
|
||||
accessibility Boolean @default(true)
|
||||
|
||||
// Performance metrics
|
||||
performance Json @default("{\"lighthouse\": 90, \"bundleSize\": \"50KB\", \"loadTime\": \"1.5s\"}")
|
||||
|
||||
// Analytics
|
||||
analytics Json @default("{\"views\": 0, \"likes\": 0, \"shares\": 0}")
|
||||
|
||||
// Timestamps
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
// Indexes for performance
|
||||
id Int @id @default(autoincrement())
|
||||
title String @db.VarChar(255)
|
||||
description String
|
||||
content String
|
||||
tags String[] @default([])
|
||||
featured Boolean @default(false)
|
||||
category String @db.VarChar(100)
|
||||
date String @db.VarChar(10)
|
||||
github String? @db.VarChar(500)
|
||||
live String? @db.VarChar(500)
|
||||
published Boolean @default(true)
|
||||
imageUrl String? @db.VarChar(500)
|
||||
metaDescription String?
|
||||
keywords String?
|
||||
ogImage String? @db.VarChar(500)
|
||||
schema Json?
|
||||
difficulty Difficulty @default(INTERMEDIATE)
|
||||
timeToComplete String? @db.VarChar(100)
|
||||
technologies String[] @default([])
|
||||
challenges String[] @default([])
|
||||
lessonsLearned String[] @default([])
|
||||
futureImprovements String[] @default([])
|
||||
demoVideo String? @db.VarChar(500)
|
||||
screenshots String[] @default([])
|
||||
colorScheme String @default("Dark") @db.VarChar(100)
|
||||
accessibility Boolean @default(true)
|
||||
performance Json @default("{\"loadTime\": \"1.5s\", \"bundleSize\": \"50KB\", \"lighthouse\": 90}")
|
||||
analytics Json @default("{\"likes\": 0, \"views\": 0, \"shares\": 0}")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
@@index([category])
|
||||
@@index([featured])
|
||||
@@index([published])
|
||||
@@ -59,6 +47,49 @@ model Project {
|
||||
@@index([tags])
|
||||
}
|
||||
|
||||
model PageView {
|
||||
id Int @id @default(autoincrement())
|
||||
projectId Int? @map("project_id")
|
||||
page String @db.VarChar(100)
|
||||
ip String? @db.VarChar(45)
|
||||
userAgent String? @map("user_agent")
|
||||
referrer String? @db.VarChar(500)
|
||||
timestamp DateTime @default(now())
|
||||
|
||||
@@index([projectId])
|
||||
@@index([timestamp])
|
||||
@@index([page])
|
||||
}
|
||||
|
||||
model UserInteraction {
|
||||
id Int @id @default(autoincrement())
|
||||
projectId Int @map("project_id")
|
||||
type InteractionType
|
||||
ip String? @db.VarChar(45)
|
||||
userAgent String? @map("user_agent")
|
||||
timestamp DateTime @default(now())
|
||||
|
||||
@@index([projectId])
|
||||
@@index([type])
|
||||
@@index([timestamp])
|
||||
}
|
||||
|
||||
model Contact {
|
||||
id Int @id @default(autoincrement())
|
||||
name String @db.VarChar(255)
|
||||
email String @db.VarChar(255)
|
||||
subject String @db.VarChar(500)
|
||||
message String
|
||||
responded Boolean @default(false)
|
||||
responseTemplate String? @map("response_template") @db.VarChar(50)
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
@@index([email])
|
||||
@@index([responded])
|
||||
@@index([createdAt])
|
||||
}
|
||||
|
||||
enum Difficulty {
|
||||
BEGINNER
|
||||
INTERMEDIATE
|
||||
@@ -66,55 +97,9 @@ enum Difficulty {
|
||||
EXPERT
|
||||
}
|
||||
|
||||
// Analytics tracking
|
||||
model PageView {
|
||||
id Int @id @default(autoincrement())
|
||||
projectId Int? @map("project_id")
|
||||
page String @db.VarChar(100)
|
||||
ip String? @db.VarChar(45)
|
||||
userAgent String? @db.Text @map("user_agent")
|
||||
referrer String? @db.VarChar(500)
|
||||
timestamp DateTime @default(now())
|
||||
|
||||
@@index([projectId])
|
||||
@@index([timestamp])
|
||||
@@index([page])
|
||||
}
|
||||
|
||||
// User interactions
|
||||
model UserInteraction {
|
||||
id Int @id @default(autoincrement())
|
||||
projectId Int @map("project_id")
|
||||
type InteractionType
|
||||
ip String? @db.VarChar(45)
|
||||
userAgent String? @db.Text @map("user_agent")
|
||||
timestamp DateTime @default(now())
|
||||
|
||||
@@index([projectId])
|
||||
@@index([type])
|
||||
@@index([timestamp])
|
||||
}
|
||||
|
||||
enum InteractionType {
|
||||
LIKE
|
||||
SHARE
|
||||
BOOKMARK
|
||||
COMMENT
|
||||
}
|
||||
|
||||
// Contact form submissions
|
||||
model Contact {
|
||||
id Int @id @default(autoincrement())
|
||||
name String @db.VarChar(255)
|
||||
email String @db.VarChar(255)
|
||||
subject String @db.VarChar(500)
|
||||
message String @db.Text
|
||||
responded Boolean @default(false)
|
||||
responseTemplate String? @db.VarChar(50) @map("response_template")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
@@index([email])
|
||||
@@index([responded])
|
||||
@@index([createdAt])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user