AI
Storing AI generation history
The AI SaaS Starter writes each finished generation to Prisma: prompt, output, credits, and the user id.
Chat history in the AI SaaS Starter is a table, not browser storage.
model Generation {
id String @id @default(cuid())
userId String
user User @relation(fields: [userId], references: [id])
prompt String
output String
credits Int
createdAt DateTime @default(now())
}
The row is written when a generation finishes. credits is 1 for that call. The monthly limit sums credits for the user since the first day of the local month. Free accounts stop at 20. Pro accounts stop at 500. The check itself is implementing AI usage limits and credits.
output stores the text that was streamed. The stream path is streaming AI responses in Next.js. The database is SQLite in this kit.
The model does not store token counts from the provider, tool calls, or embeddings. If a request fails before it finishes, there is no row, and no credit is spent. The provider URL is configured as in OpenAI-compatible API architecture.