project : DABL is a cloud platform built to help you take your SaaS application from humble beginnings to mass adoption with as little development as possible.
DABL is a great option for any developer looking to build a simpler, scalable backend for their application.
The DABL developer experience allows you to deploy your DAML application and capture the exploding value of innovation found in APIs and services without having to become an expert in those areas.
Almost any application heavier than a pure webapp can benefit from using project:DABL as a backend. Developers are using project:DABL to build applications like crypto exchanges, loan management platforms, medical claims management, digital rights management, and many more.
It is completely free to start using project:DABL, so get started today.
1. Create a new project
In project:DABL console, go to the Projects page. Click on New Project and provide a unique name for your project and its first ledger. A new environment with a dedicated staging ledger will be deployed in a couple of minutes.
2. Download and compile the sample app
Follow the instructions in DAML SDK Quickstart Guide. After you compile the DAML model, you will get the DAR package called
3. Run the sample app locally
As described in DAML SDK Quickstart Guide, run the sandbox using
iou.dar and start the Navigator. The app will then run locally so you can try it yourself.
4. Deploy and run the sample app on project:DABL
To deploy the sample app
iou.dar to project:DABL, go back to project:DABL console and browse to the project you created. Then, upload
iou.dar from your local machine.
Once your .dar is deployed, you can start interacting with the staging ledger in the console or connect your web application to it.
For example, add parties and contracts in the Live Data tab as shown below:
A project contains ledgers that can be accessed by users and automation bots based on their permissions and DAML authorization rules. The user who creates a project becomes its owner. A project owner has special permissions which allow him to deploy DAML packages (DARs), automation bots, and create DAML parties on the ledger.
A DABL ledger provides a persistence store for the application and encodes the current state of its shared contracts, written in DAML. A DABL Ledger is fully compliant with the Digital Asset Ledger Model.
Each DABL project allows the user to deploy to two different types of ledgers:
- Staging Ledger - for you to test your application and demo to users
- Production Ledger - for you to run your application with full DABL SLAs
Ledgers are completely isolated from each other. This means that users and automation bots can not access ledgers of other DABL projects unless authorized. You can read more about the access control to the ledger.
Staging mode- Staging ledgers are recommended for development and testing purposes. It allows the project owners to create as many DAML parties they’d like for testing and simulating the DAML application. Since the ledger is append-only, you cannot delete or edit transactions, but you can reset the entire ledger to erase all contracts and files.
Production ledgers are used for applications that record end-user transactions. Each end-user is authorized to access the ledger with a partial view that includes all his contracts defined by DAML and the user
DAML party. Production ledgers also provide SLAs for your application.
Note: We are currently offering Dedicated Staging ledgers to our early users with more to come soon.
Follow this guide to use project:DABL REST API with your UI or as a client for end-user access, for example, in a Node.js desktop or IoT application.
1. Create a DABL Project
Before you can add project:DABL to your UI, you need to create a DABL project to connect to your app.
Visit Understand DABL projects to learn more.
2. Obtain your project:DABL config
The config includes the information required to configure your web app to use project:DABL. You can obtain this information in your project settings page.
3. Connect your app to the project:DABL REST API
You can set access control using
DAML parties at the project level. DAML provides the app developer granular access control rules that are easily modeled and understood by all users.
For example, the
app (DAML party) may issue a new wallet to
Alice (DAML party) as its sole controller. After
Alice accepts her new wallet, she is provided with choices to withdraw or deposit cash to her wallet and no other entity but her will have access to this wallet. The following diagram illustrates this example:
There are two types of entities who you can control their access to the project: end-users and services:
- End-users are real people who interact with the application UI.
- Services are non-interactive and run without a context of a specific end-user (e.g. application monitoring service)
Both end-users and services must be authenticated and authorized in order to access the project ledgers and will never be able to access active contracts that they are not a
DAML party to.
Application access to the ledger is done through REST API for creating and fetching contracts.
End-users are authenticated and authorized to an app using modern protocols (OpenID and OAuth2). project:DABL grants each end-user a corresponding
DAML party. End-users’
DAML party is used to interact with other entities on the ledger.
The project owner can create multiple
DAML parties to operate their app, however they can never act on-behalf-of or control end-users’
Note: Authorized Services will be supported soon.
Authorizing end-users and services - Coming Soon
DAML contracts can be created by either creating a new contract from template, or alternatively, by exercising a choice on an existing contract.
The Active Contracts page in the console allows you to view all the existing DAML contracts, and also to search and filter them.
For manual testing purposes, you can also create new contracts in this page and fill the contract fields using the console interface.
- Primitives - For Int, Decimal, Text, Timestamp, Scenario, and ContractId simply enter the value in the empty field. Party and Bool contains dropdowns where you select the desired input. Date lets you select the the date you want from a calendar.
- Lists - Enter each value of the list separately and press enter. An empty list is created by default if you don't enter any values. If you wish to delete a single value, press on the x that appears above it.
- Optionals - Optional primitives are inline whereas optional records and variants are on newlines. To input an optional value, click on the view button and fill in the fields. The information is saved even when you collapse the window. If you don't want to enter anything, leave the fields blank.
- Maps - Maps are represented as key-value pairs. Keys and values have their respectively separate input fields.
- User-Defined Types - Variants appear as dropdowns and records as blocks containing their values. Variants with constructors appear as dropdown menus. Each constructor is an item on the dropdown. Once a constructor is chosen, the input fields for it appear below.
The representation of user-defined types may become arbitrarily complicated and this user interface assumes a relatively simple structure of the latter.
DAML templates define the data model and functional features of your application. Automation Bots allow you to enhance your app with business automation you can write in Python. Most applications powered by project:DABL will include a combination of DAML templates and Automation Bots. You can read more about how to write and test bots here.