Build your own experience on TechAppForce

Three SDKs for three places your code runs: your own front end, the platform's services, and the platform's screens.

TypeScript client SDK

0.x

Build your own experience on the TechAppForce back end: a framework-agnostic TypeScript core, an Angular adapter with platform components, and React hooks.

What it covers

  • Authentication: sign-in, token storage, one refresh and retry on 401
  • Data: entity(name).list/get/create/update/remove, a query builder, saved queries and bulk insert
  • Workflow: available statuses, transitions by status name, approvals and running workflows
  • Notifications and an inbox, with real-time updates over SignalR
  • UI: 17 Angular components such as <taf-grid>, <taf-form>, <taf-inbox> and <taf-card>, shipped without styling so your theme applies
  • React: a provider and hooks for the same client; React UI components are coming soon
  • Identity, menus, roles, users, permissions, files, metadata, comments, lookups, people, reports and Virtual URLs

Packages

  • taf-client-coreFramework-agnostic core: HTTP, auth, writes
  • taf-client-dataRecords and queries
  • taf-client-workflowLifecycles, approvals, workflows
  • taf-client-angularAngular providers and injection tokens
  • taf-client-reactReact provider and hooks
  • taf-grid-angular and 16 moreAngular UI components

40 packages in total, currently published under an interim npm scope at 0.x versions. The official package scope is coming soon; ask us for access.

View SDK documentation
vendors.page.ts
import { inject } from '@angular/core';
import { TAF_DATA, TAF_WORKFLOW } from 'taf-client-angular';
import { RelOp } from 'taf-client-core';

const data = inject(TAF_DATA);
const workflow = inject(TAF_WORKFLOW);

const pending = await data.entity('Vendor').query()
  .where('Country', RelOp.EqualTo, 'India')
  .orderBy('Name')
  .take(25)
  .toArray();

await workflow.transitionTo('Vendor', pending[0].Id as string, 'Approved');

.NET SDKs

Every platform service ships a .NET client, and the shared libraries define the extension points your C# plugs into.

What it covers

  • Service clients for data, metadata, reports, files, notifications, templates and the code executor
  • The query-hook contracts: IValidationHook, IPreExecutionHook, IPostExecutionHook and HookContext
  • The workflow action contract IWorkflowAction for custom workflow actions
  • Shared messaging and result types for building your own services on the same foundation

Packages

  • TAF.CRUD.SDK6.7.0Data API client and query builder
  • TAF.Report.SDK1.1.0Reports client
  • TAF.Template.SDK1.1.0Liquid template rendering
  • TAF.CodeExecutor.SDK1.3.0Code executor client
  • TAF.Infra.QueryHook2.3.1Hook interfaces and HookContext
  • TAF.Infra.WorkflowAction1.0.6Custom workflow action contract
  • TAF.Infra.MassTransit2.5.0Messaging and CQRS base types
  • TAF.Infra.Contract1.11.9Result and filter types

Packages target .NET 8. Versions are those in the current development branches.

Explore .NET SDKs
NormaliseEmail.cs
using TAF.Infra.QueryHook.Interfaces;
using TAF.Infra.QueryHook.Models;

public class NormaliseEmail : IPreExecutionHook
{
    public Task PreExecuteAsync(HookContext context)
    {
        if (context.Fields.TryGetValue("Email", out var email) && email is string s)
            context.Fields["Email"] = s.Trim().ToLowerInvariant();
        return Task.CompletedTask;
    }
}

TAF SDK for screen extensions

0.0.74

The browser-side API available to screen extensions and custom components inside the TechAppForce runtime.

What it covers

  • TabSdk.crud: insert, update, delete, bulk insert, saved queries, stored procedures, record history, search and import
  • TabSdk.ui: dialogs, sidebars, opening screens, confirmations and notifications
  • TabSdk.form: screens, screen data and form submission
  • TabSdk.transition and TabSdk.workflow: statuses, bulk status changes and running workflows
  • TabSdk.file, report, http, state, signalR, notification, role and billing

Packages

  • @techextensor/tab-sdk0.0.74Screen extension API
Screen extension guide
vendor-screen.extension.tsIllustrative: parameters depend on the screen
export class VendorScreenExtension extends IScreenExtensionBaseClass {
  async onAfterSubmit(screenParameters: any) {
    TabSdk.ui.showSuccess('Vendor saved');
  }
}

Stay current with TechAppForce development

One email when something changes that developers should know about.

  • New APIs
  • SDK updates
  • TAF Studio releases
  • TAFI updates
  • Tutorials
  • Developer events