Getting started
Getting started
smartsoft001 is a set of publishable npm packages that share the models, UI components and backend building blocks used across Angular and NestJS projects.
Installation
Add the packages you need to an existing Angular or NestJS workspace.
Packages
Browse the shared libraries and the crud, auth and trans feature families.
Components
Every smart-* UI component with its API, an executed usage example and the live Storybook story.
Claude Code skills
The smart@smartsoft plugin that brings the repository conventions into Claude Code.
What is smartsoft001
The framework is an Nx monorepo published as @smartsoft001/* packages. Shared libraries cover models, domain-core, utils, Angular UI components, NestJS helpers, MongoDB access, users and integrations such as PayPal, PayU, Paynow, Revolut, Facebook and Google. On top of them sit three feature families: crud for metadata-driven data management, auth for authentication and trans for payment transactions across PayU, PayPal, Paynow and Revolut.
Every feature family is split the same way. The domain layer holds entities and business rules with no framework dependency, while the shell layer adapts that domain to a runtime: nestjs for the backend, angular for the frontend, dtos for the contracts between them and app-services for the glue. Every code sample in these docs is cut from code that is compiled and tested in CI, so it reflects the packages as they are published.
Quick start
Install the packages you need in an existing workspace.
npm install @smartsoft001/angular @smartsoft001/models
Then drop a framework component into a standalone Angular component. The code below is not typed into this page: it is cut from an example file that is compiled and executed by the repository's test suite, so it always matches the published packages.
import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
import { ButtonComponent, IButtonOptions } from '@smartsoft001/angular';
@Component({
selector: 'docs-button-basic-example',
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [ButtonComponent],
template: `<smart-button [options]="options">Save</smart-button>`,
})
export class ButtonBasicExampleComponent {
saved = signal(false);
options: IButtonOptions = {
click: () => this.saved.set(true),
variant: 'primary',
size: 'md',
};
}
Installation details and per-package guides are being published section by section, so this page will grow as each area of the framework is documented.

