Jobs

Job board database schema

Companies, categories, and jobs in the Job Board Starter. A job stays pending until it is marked paid.

1 min read

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.

Product updates for developers shipping with Designyff kits.

Purchased source may be used in personal, commercial, and client projects. Do not redistribute or resell the original source. Terms of Service

Designyff © 2026 | Starter kits for developers | Powered by  Tacko