Cavuno SDK

Build a custom job board frontend on Cavuno’s managed backend with the typed @cavuno/board SDK.

Build a custom job board without rebuilding job board infrastructure. You own the frontend, framework, hosting, and deployment. Cavuno remains the managed system of record for jobs, search, companies, accounts, applications, alerts, messaging, monetization, SEO data, and more.

@cavuno/board is the typed interface between those two layers. It has zero runtime dependencies and runs in browsers, Node.js 20+, and Cloudflare Workers.

What you can build

Use the SDK when Cavuno’s managed frontend is not the product you need—for example, when the job board must live inside an existing publication, SaaS product, membership community, or mobile-backed application. The same client covers anonymous catalog reads, board-user authentication, candidate and employer workflows, monetization, and the SEO artifacts a public job board needs.

Choose your path

  • Hosted frontend: use Cavuno’s visual builder and managed hosting. No SDK is required.
  • Your frontend: use the SDK with the framework and hosting platform you already prefer.

Both paths use the same Cavuno backend, so you can launch hosted and move to a custom frontend later without migrating your job board data.

Make your first request

Install the package with your project’s package manager:

npm
pnpm
Yarn
Bun
npm install @cavuno/board

Create one client for the board. A pk_… publishable key identifies the board and is safe to include in frontend code.

ts
// src/lib/cavuno.ts
import { createBoardClient } from '@cavuno/board';
export const board = createBoardClient({
board: 'pk_example',
});

Use a typed namespace to fetch data:

ts
import { board } from './lib/cavuno';
const { data: jobs, hasMore, nextCursor } = await board.jobs.list({
remoteOption: ['remote'],
limit: 20,
});

If the key resolves, jobs contains public job cards and pagination metadata describes the next page. An invalid or revoked key fails with a BoardApiError instead of returning an empty board.

Verify your connection

Log the board identity and first result while setting up:

ts
const [context, page] = await Promise.all([
board.context(),
board.jobs.list({ limit: 1 }),
]);
console.log({
board: context.name,
language: context.language,
firstJob: page.data[0]?.title ?? null,
hasMore: page.hasMore,
});

Confirm the name and language match the intended Cavuno board. firstJob: null is a valid empty catalog; a rejected request is a configuration or connectivity failure to fix before building routes.

Understand the boundary

Cavuno ownsYour application owns
Board data and feature configurationRoutes and page composition
Search, pagination, and API authorizationComponents and interaction design
Candidate and employer workflow rulesSession integration and redirect UX
Monetization and entitlement decisionsCheckout handoff and return pages
Canonical data for SEO artifactsRendering metadata, JSON-LD, and sitemaps
Typed errors and request IDsError messages, logging, and recovery UI

Start building

  1. Follow Getting started until a real board renders.
  2. Open the Framework guides and put the client in the right runtime boundary.
  3. Read Fundamentals before adding authentication, caching, or server rendering.
  4. Build one user journey at a time in Build your job board.
  5. Use Frontend infrastructure for routes, metadata, structured data, and sitemaps.
  6. Finish with Production, then run the SDK doctor against the deployed site.

For an exact method signature, use the SDK reference. For complete multi-namespace journeys, use the Cookbook.

What the SDK is not

The SDK is not a frontend framework, component library, scaffolder, hosting platform, or deployment service. It supplies typed job board data and workflows. Your application supplies the routes, components, styling, and deployment.