@olli/api-client-backend

Type-safe API client for the backend service, auto-generated from OpenAPI spec using @hey-api/openapi-ts.

This is a just-in-time (JIT) package - consuming apps compile the TypeScript source directly for optimal performance.

Installation

Add to your app's dependencies:

{
  "dependencies": {
    "@olli/api-client-backend": "workspace:*"
  }
}

Usage

import { getDemoPersons, postDemoPersons } from '@olli/api-client-backend';
import { client } from '@olli/api-client-backend/client';

// Configure the client once
client.setConfig({
  baseUrl: 'http://localhost:3003',
  headers: {
    'Authorization': 'Bearer token'
  }
});

// Use type-safe SDK functions
const { data: persons } = await getDemoPersons();

const { data: newPerson } = await postDemoPersons({
  body: {
    first_name: 'John',
    gender: 'man',
    metadata: {
      login_at: new Date().toISOString(),
      ip: null,
      agent: null,
      plan: 'free'
    }
  }
});

Direct Client Access

import { client } from '@olli/api-client-backend/client';

const response = await client.get({ url: '/demo/persons' });

Exports

  • @olli/api-client-backend - All generated SDK functions and types
  • @olli/api-client-backend/client - Client instance and configuration

Development

Generate Client

The client is automatically generated from the backend's OpenAPI spec:

# Generate from OpenAPI spec
turbo run generate --filter=@olli/api-client-backend

# Or manually
cd apps/backend && pnpm export-openapi
cd ../../packages/api-client-backend && pnpm generate

Type Checking

pnpm check-types

Architecture

This package follows Turborepo best practices as a JIT (Just-In-Time) package:

  • No build step - TypeScript source consumed directly
  • Faster hot reload in development
  • Single compilation by consuming app
  • Better tree-shaking and bundle optimization
  • TypeScript project references for incremental builds