Skip to content

Frontend SDK

The frontend stack in Dynamia Platform now follows a modular approach:

  1. Core SDK: @dynamia-tools/sdk
  2. UI adapter (beta): @dynamia-tools/vue
  3. Extension SDKs when your backend enables extra modules (reports, entity-files, saas)

This page explains the new approach and how to combine these packages.

The core SDK is always the base layer. It gives you typed access to metadata, navigation, CRUD, and actions.

Terminal window
pnpm add @dynamia-tools/sdk
import { DynamiaClient } from '@dynamia-tools/sdk';
export const client = new DynamiaClient({
baseUrl: import.meta.env.VITE_API_URL,
token: localStorage.getItem('auth_token') ?? undefined,
});

2) Vue support (@dynamia-tools/vue) - Beta

Section titled “2) Vue support (@dynamia-tools/vue) - Beta”

If you are building a Vue 3 app, use the official Vue adapter.

Terminal window
pnpm add vue @dynamia-tools/vue @dynamia-tools/ui-core @dynamia-tools/sdk

See the dedicated guide: Vue Support (Beta).

Install these only when your backend uses the corresponding extension:

  • @dynamia-tools/reports-sdk
  • @dynamia-tools/files-sdk
  • @dynamia-tools/saas-sdk

See Extensions for installation and usage details.

Use one shared DynamiaClient and pass client.http to extension SDKs.

import { DynamiaClient } from '@dynamia-tools/sdk';
import { ReportsApi } from '@dynamia-tools/reports-sdk';
import { FilesApi } from '@dynamia-tools/files-sdk';
import { SaasApi } from '@dynamia-tools/saas-sdk';
const client = new DynamiaClient({
baseUrl: import.meta.env.VITE_API_URL,
token: localStorage.getItem('auth_token') ?? undefined,
});
export const reports = new ReportsApi(client.http);
export const files = new FilesApi(client.http);
export const saas = new SaasApi(client.http);
const app = await client.metadata.getApp();
const navigation = await client.metadata.getNavigation();
console.log(app.name, navigation.navigation.length);
const booksApi = client.crud('library/books');
const page = await booksApi.findAll({ page: 1, size: 20, q: 'clean code' });
await client.actions.executeGlobal('exportBooksToExcel', {
params: { format: 'xlsx' },
});

The same auth model is reused across all frontend SDK packages through the same HttpClient:

  • token for Bearer auth (recommended for SPA)
  • username + password for Basic auth
  • withCredentials: true for cookie/session-based auth
import { DynamiaApiError } from '@dynamia-tools/sdk';
try {
await client.crud('library/books').findById(999999);
} catch (error) {
if (error instanceof DynamiaApiError) {
console.error(`[${error.status}] ${error.message}`);
}
}
  • Read Vue Support (Beta)
  • Explore Extensions
  • Review the package docs in the monorepo:
    • platform/packages/sdk
    • platform/packages/vue
    • extensions/*/packages/*-sdk