Jobs
Job board database schema
Companies, categories, and jobs in the Job Board Starter. A job stays pending until it is marked paid.
The Job Board Starter uses three models.
model Company { id String @id @default(cuid()) slug String @unique name String website String jobs Job[] }
model Category { id String @id @default(cuid()) slug String @unique name String jobs Job[] }
model Job {
slug String @unique
title String
location String
description String
status String @default("pending")
paid Boolean @default(false)
companyId String
categoryId String
}
Public pages should read jobs that are paid and no longer pending. status defaults to "pending". paid defaults to false. The return route from Stripe sets the job live only when payment_status is paid. That step is accepting paid job submissions with Stripe.
Company and category slugs are unique, which is what the public URLs use. The board itself is building a job board with Next.js. Indexing those URLs is SEO for job boards.