# npm npm install saaskit # Yarn yarn add saaskit
This module is based on the idea that a SaaS app being decomposed to its elemental abstractions of:
Nouns represent the things, or resources, that the application interacts with. Typically, these Nouns can be be interacted with in a List + CRUD format, where the List of current instances can be queried, along with the ability to Create, Read, Update, and Delete these Nouns.
These resources could be scoped to the owner tenant, where resources created by a user (or a user's tenant) can only be accessed by the creator. Alternatively, these resources could be scoped to have delegated authorization, where they can also be accessed by authorized users/tenants. And finally, there is the option to have globally accessible resources, where the Noun can be created by a user/tenant who would own it, but where that Noun could be accessible and visible to any User/Tenant in the system.
Triggers are the events that occur within the application and the Nouns represented.
Searches are the ability to query or search instances of Nouns.
Actions are the ability to perform a function, or lambda, either on an instance of a Noun/Resource or in a general stateless behavior.
Functions are the capability to encapsulate a behavior in a stateless function, or lambda, that can perform a defined function or capability.
APIs are the interfaces with the Nouns, Triggers, Searches, Actions, and Functions. They can be exposed via REST, GraphQL, or WebSockets.