Examples

 

On this page you can find all sorts of Daml sample applications to help you get started, learn about Daml features, or get inspiration on subject areas. If you would like to get your own application listed here, please contact community@daml.com, or post about it on the forum.

GETTING STARTED TEMPLATES

 

  • Create-Daml-app – A full stack application example including Daml models and a UI for a simple social networking app.
  • Our recommended way of bootstrapping a new app. Visit the Getting Started documentation to learn about this template.
  • Skeleton – The default template consisting of a daml.yaml project config and a single .daml file containing a simple Iou.
  • Empty-skeleton – The minimal Daml project containing only a daml.yaml project config
  • Script-example – An example project getting you started with Daml Script and Daml REPL. Visit the linked documentation for guides around this example.
  • Copy-trigger – An example illustrating Daml Trigger automation through a “broadcast” model that maintains a copy of a master contract. Visit the linked documentation for a guide on this example.
  • Quickstart-java – An IOU example illustrating the use of the Java Ledger API Bindings. Visit the Java quickstart documentation for a guide on this example.
  • Quickstart-scala – A light version of the quickstart-java example using the Scala Ledger API Bindings. Note that the Scala bindings are deprecated in Daml Connect.
  • Daml-intro-* – The Daml code samples used in An Introduction to Daml, where * is the chapter number from 1 – 10.
  • Daml-patterns – The code samples from the Daml design patterns docs.
LEDGER API BINDINGS

 

In addition to the getting started templates, Digital Asset maintains small sample applications illustrating the use of Ledger API Bindings.

 

ADDITIONAL TOOLING AND INTEGRATION

 

These projects provide additional functionality to Daml Connect, and can be used either as tools or as examples how to integrate with the Daml stack.

 

  • Daml Maven Plugin – A plugin to integrate Daml compilation and Java codegen in your Maven build.
  • Daml-ui-template – A template for a generic Daml application UI written using the Daml JavaScript client libraries and the MaterialUI framework.
  • DAZL – an Ledger API integration library for Python.
  • Functional Testing Library – A Java library for functional testing of Daml applications.
  • Message Integration Library – A library to integrate a Daml ledger with external systems using Java. Includes an example on FpML Clearing.
  • .NET bindings – Ledger API bindings for .Net
  • Rejig – by Matt Stewart – A module header formatting tool for Daml
TUTORIALS AND GUIDES

 

These projects provide additional tutorials and guides, either in general, or on specific topics.

 

  • Daml Driver example – An example Daml ledger implementation using Daml Integration Kit.
  • Error Handling – This repository walks you through how you can handle errors in batch transactions such that the transaction will run through partially and not fail completely if an error arises in some part.
  • Handling Contention in Daml – This project demonstrates issues around contention in Daml and possible solutions for handling them.
  • Secure Daml Infra – A reference implementation of how to setup a Daml Ledger with full “Infrastructure” security, i.e. secure connections over TLS and connection authorization via tokens.
APPLICATIONS AND LIBRARIES

 

These are examples of Daml applications or libraries related to specific business domains or subject areas.

Finance

 

  • Asset Servicing – This application demonstrates asset servicing workflows for stocks, listed options and structured products. It covers corporate actions (stock split, cash dividend) and lifecycle events (coupon payment, barrier hit, early redemption).
  • Bond Issuance – An application demonstrating the issuance of a bond.
  • CBDC Blog example – A Daml project with code samples for the blogpost “Why Daml is great to represent digital currency“.
  • Collateral Management – An example which demonstrates how the collateral management process can be modeled in Daml.
  • Daml Finance Library – The FinLib is a collection of pure functions, Daml templates and triggers that can be used as building blocks to speed up application development and to increase code reuse, standardisation and compatibility across solutions.
  • ISDA CDM Event Specification Module – The CDM Event Specification Module is an extension to the ISDA Common Domain Model (CDM) schema that standardizes the process of generating valid CDM event messages by adding a machine readable specification of the required business logic to the CDM.
  • ISDA CDM Swaps – This is an application for lifecycling interest rate swaps (IRS) and credit default swaps (CDS) across their lifetime using ISDA’s CDM including the CDM event specification module.
  • Know Your Customer – This application demonstrates the lifecycle of KYC (Know Your Customer) data subscriptions. Financial institutions can acquire licenses to subscribe to data streams, periodically receiving tailored research on their customers.
  • Market Data Service – This application demonstrates the lifecycle of market data subscriptions. Consumers can acquire licenses to subscribe to either raw data streams or streams enriched by analytics.
  • Structured Products – Structured Equity Derivative Products are used to provide custom payoffs, often for Private Bank or wealth clients, who are looking to get exposure to particular underlying company performance in a way that traditional securities do not provide.
  • Structured Trade Finance – The application demonstrates a simplified example of creating a chain of participants between a Manufacturer and its Tier-1, Tier-2, and Tier-3 subcontractors.
Healthcare

 

Healthcare Claims Processing – The application demonstrates processing a healthcare claim, starting with the referral from the Primary Care Provider (PCP) and including the creation of an appointment with the radiologist, checking in the patient on the date of the appointment, checking out the patient after service delivery, generation of the claim, and finally, payment for the procedure.

Miscellaneous

 

  • BP-Daml – by Sofus Mortensen – An experiment in Business Process Modelling in Daml
  • Contracts for T-Shirts – An application for a competition run at the ZuriHack 2020 hackathon demonstrating how to connect to and interact with a Daml network using the Canton protocol
  • Crypto Inventory Management – Crypto Inventory Management System (IMS) has been designed to make it easy and safe for crypto funds to manage their crypto assets on public ledgers (such as the Bitcoin network). It is one component of a potential future crypto-trading ecosystem augmented with custom compliance rules.
  • DABL Chess – DABL Chess is a fog-of-war variant of Chess where you see only your pieces and where they can move.
  • Daml Examples – Several use cases modeled in Daml. They showcase useful patterns and practices when writing Daml applications.
  • Digital Asset Vacation Ledger (DAVL) – Holiday tracking application, driven by Daml.
  • Proposal Delegation – A Daml model for the scenario of an employee making a proposal to a company on the behalf of their employer, with the employees of the other company accepting or rejecting the proposal. It is designed to be an example of how Daml can separate the company party from the employee parties who can act on behalf of it, without having to rely on an external IAM/RBAC.
  • Yachts in Daml – A tutorial example of how one might represent the manufacture, ownership, custody, and oversight of a yacht.
Productivity

 

  • DABL Chat – A Daml app that can be deployed to project:DABL.
  • OpenWork Board – A Kanban board backed by a Daml ledger, inspired by Trello and based on react-kanban.
  • OpenWork Feed – This application allows users to create a feed and control users who wish to subscribe them. All user subscriptions must be approved. Once a user is approved, users can comment, like, re-post etc. on all their favourite posts.
Real Estate

 

Mortgage Repackaging – This demo executes the process of “repackaging” a mortgage-backed security (MBS) to reduce risk by consolidating several pools of loans into a single security. An MBS is a collection or pool of mortgages that are securitized or packaged as a security. As an MBS ages, the underlying mortgages get paid down or are removed from the pool because of, for example, default or refinancing. Rolling multiple MBS pools into one larger one can substantially reduce risk, as the default of a single loan will have a smaller effect on the whole.