### Run Locally with npm Source: https://github.com/startupkit-app/nextjs-job-board/blob/main/README.md Clone the repository, install dependencies, configure environment variables, and start the development server. ```bash git clone https://github.com/startupkit-app/nextjs-job-board cd nextjs-job-board npm install cp .env.example .env.local # then paste your sk_… key npm run dev ``` -------------------------------- ### Webhook Revalidation Example Source: https://github.com/startupkit-app/nextjs-job-board/blob/main/README.md Example of a POST request to the revalidation endpoint to instantly update job postings. Requires setting REVALIDATE_SECRET and a Kit webhook. ```bash POST https://your-site.example/api/revalidate Authorization: Bearer Content-Type: application/json { "event": "job_posting.published", "data": { "job": { "id": "" } } } ``` -------------------------------- ### SDK Shim Import Swap Source: https://github.com/startupkit-app/nextjs-job-board/blob/main/README.md Instructions for swapping the SDK shim with the official `@startupkit/jobs` package by modifying import statements in `lib/kit.ts`. ```typescript // before export * from "./kit-sdk-shim"; import { createClient } from "./kit-sdk-shim"; // after export * from "@startupkit/jobs"; import { createClient } from "@startupkit/jobs"; ``` -------------------------------- ### npm Scripts for Development and Build Source: https://github.com/startupkit-app/nextjs-job-board/blob/main/README.md Common npm scripts for running the development server, building for production, and performing linting and type checking. ```bash npm run dev # start the dev server npm run build # production build npm run start # serve the production build npm run lint # eslint npm run typecheck # tsc --noEmit ``` -------------------------------- ### Project Structure Overview Source: https://github.com/startupkit-app/nextjs-job-board/blob/main/README.md A hierarchical view of the Next.js Job Board project's directories and key files. ```plaintext app/ page.tsx # Job list (ISR 60s, tag "jobs") + filters + pagination layout.tsx # Shell: header, footer, skip link loading.tsx / error.tsx / not-found.tsx opengraph-image.tsx # Branded OG image jobs/[token]/ page.tsx # Job detail (ISR 300s, JSON-LD, generateStaticParams) loading.tsx apply/ page.tsx # Fetches the form schema server-side apply-form.tsx # Client: dynamic field/question renderer, useActionState actions.ts # Server Actions: submitApplication, createResumeUpload resume-upload.tsx # Client: MD5 → presign → direct PUT with progress api/revalidate/route.ts # Optional webhook → revalidateTag components/ job-card.tsx job-filters.tsx salary.tsx empty-state.tsx turnstile.tsx lib/ kit.ts # server-only client instance (swap point for the real SDK) kit-sdk-shim.ts # typed API client + all contract types md5.ts # vendored MD5 (base64) for upload checksums jsonld.ts # schema.org JobPosting builder format.ts jobs.ts # display helpers, shared job fetcher ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.