// Prisma 7 (rust-free `prisma-client` generator + driver adapter). // Client is generated into src/generated/prisma (gitignored) and imported // from "../generated/prisma/client". generator client { provider = "prisma-client" output = "../src/generated/prisma" } datasource db { provider = "postgresql" } enum ProjectSize { Big MediumSized Small } model Project { id String @id @default(cuid()) name String label String // free-type string, e.g. "Dev Tool", "SaaS" size ProjectSize @default(MediumSized) imageUrl String? // shown fully, nothing overlapping link String linkIsDemo Boolean @default(false) sourceCode String? // github or gitea link description String why String note String? // free note, replaces old {color, content} tags String[] // max 3 enforced in the API loc Int? // manually provided line-of-code count locEndpoint String? // URL the backend hits for a plaintext LoC number createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model WorkExperience { id String @id @default(cuid()) company String role String fromDate DateTime toDate DateTime? // null = Present url String? iconUrl String? summary String tags String[] // max 6 enforced in the API sortIndex Int @default(0) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model Affiliate { id String @id @default(cuid()) name String link String icon String location String provides String[] good String[] bad String[] sortIndex Int @default(0) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } model BlogPost { id String @id @default(cuid()) title String slug String @unique excerpt String coverImageUrl String? content String @db.Text isPublished Boolean @default(true) views Int @default(0) publishedAt DateTime? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }