Jobs

Job board database schema

We earn commissions when you shop through the links below.

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.

Guides: Next.js, Stripe, and SaaS starter kits Professional website design for small businesses

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

Designyff © 2026 | Starter kits for developers