Skip to content
CCPEDIAby Unity Nodes
VideosHave a startup idea? Then get your MVP ready - Fast! (Part 2)

Have a startup idea? Then get your MVP ready - Fast! (Part 2)

Nothing is loaded from YouTube until you press play, and then without tracking cookies.

About this video

๐Ÿ“– Get started with Daml: bit.ly/tryDaml ๐Ÿ“š Learn more about Daml Smart Contracts: bit.ly/learn_daml ๐Ÿ“ฎCheck out our blogs: bit.ly/daml-blog-engineering ๐Ÿ“‹ Become a Daml certified expert: bit.ly/daml-certification

We know how complex it can be to get your idea from concept to scale.

Wouldn't it be great to eliminate all of the non value-added stuff you have to spend time on, a.k.a. setting up servers, configuring databases, defining authentication, writing logic for authorization and role based access, fine tuning performance, checking security, keeping your app up and so on. Phew! Not to mention all of the marketing and lead generation stuff that you have to handle.

In this meetup we'll show you how to rapidly get to your minimum viable product so you can focus on engaging your users. No more relying on powerpoint presentations to sell and explain your idea. Go from business idea into a working app in a matter of hours, and then from there to get it ready for your MVP launch!

6:00 - 6:30 pm - Welcome and networking, grab a drink & pizza 6:30 - 7:45 pm - Bringing an app live step by step - concept to MVP! 7:45 - 8:00 pm - Q & A, and your ideas 8:00 - close - Networking & Close.

This is NOT about using a drag and drop builder, so there are no constraints on functionality.

1. To get started with DAML, visit docs.daml.com, and join the community.

2. Please create a free account on project: DABL and deploy this smart contracts based chat application on your ledger. You get your own URL to share with everyone, and now have your own collaboration system for your projects!

3. Here are two other end-to-end samples here and here that will help you get started when you are ready to host your own business app.

4. What better way than to create your roadmaps and important to-dos on DAML smart contracts based, project:DABL hosted, OpenWork Board! Board is a Kanban-style card tracking app.

5. Get certified in DAML - the price i

Transcript

5,858 words

Captions as YouTube publishes them, usually machine-generated, so names such as Daml and Canton can be misheard.

  1. 0:02

    good morning everyone so today we are going to show you how to take your application from concept to live within a few hours so you can be ready with a functioning and demonstrable demo of your application within a few hours and then finally of course you can spend a few more days to go make it take it to the prototype stage so before we do that I want you to introduce my panelists

  2. 0:32

    here Demetri from digital asset he's going to be taking us through you know through the through some live coding and also give you a live example of what it will look like once it's deployed what we are going to be talking about today is and so this is just a you know the CC do for AWS was on stage last year at AWS reinvent and he said all the code you ever write is going to be business logic so that's the future and happy to say that the future is almost here and today

  3. 1:05

    we are going to use the Demel smart contract language which is a really a very easy way for you to build applications from scratch and it allows you to only focus on the business logic and not on all of the scaffolding that goes around it and we're going to show you a sample of that today we are going to be using project de belem this is a cloud-based environment for devil which

  4. 1:32

    abstracts away all of the infrastructural complexities from you as you develop your applications so using demel you focus on your business logic you write your workflow Endemol you deploy it on project level and it's automatically ready for use by your users so you don't have to worry about servers load balancing performance availability none of those things everything is managed by project level project double automatically also exposes api's from your demel smart contract code so your front-end which is

  5. 2:05

    also going to be deployed on double which Emma tree is going to show you how can use those ap is that are automatically exposed by project level so you don't have to worry about any of those security authentication and you know API vacation of your application as well so without further ado then we'll start it with us we'll get started with a simple demo of what the application looks like in production so Dimitri is going to show that we're going to play

  6. 2:32

    around with it for a couple of minutes and then Dimitri is going to show you how to actually code it make some enhancements to it and then deploy it and test it so we'll be doing all of that in the next 30 minutes so you will see how we can go from an idea that you have to a working demo and actually a fully functioning application life in about 30 35 minutes so Dimitri just sharing yep hey everyone so let me share my screen

  7. 3:08

    you guys should be able to see my screen so yeah before we start getting into coding what I'd like to show first is the initial version of the application that we're going to be rewriting and extending its functionality and then show you how you can actually fetch it yourself since this lives in the an open-source repo so this is the if I switch here tabs and I go to the demo app template this is the I have basically an application

  8. 3:42

    template that is open source and live on github you can take it and with a few steps you can build to build it locally and then deploy to project that this is a deployed version so all I have to do to login as I can click the button and given that I have already a project double account this is going to redirect and straight into yeah if not it would prompt me actually asked probably right

  9. 4:06

    now to sign in or sign up I already have an account I'm gonna just use my Google credentials and within a few moments I'm in the application it's a pretty trivial app it has a single report page and it's listing assets that are represented as demo contracts these assets have an issuer which is a party in the system it's double uses party IDs represent every part in the system so then it has

  10. 4:42

    an owner field again a party ID it happens to me that given that I've created everything I'm also the issuer and the owner that's my party ID which is the same as my as my user field here and then I have three different assets I have a TV a car in a laptop and all the functionality that this application does has is to be able to transfer those assets exercising and give choice and

  11. 5:06

    nominating a new owner so what I'm gonna do right now just to check that this is appropriate and I'm working is that I'm going to invite my friend Manish and just give him maybe a card or let me just go ahead and send the URL to excited about getting the car Demetri copy this switch to chat and let me just well okay yeah I have your I have the URL in my chat and I'm going to go login and register and given that I am the author of the app and I'm hosting it on my own ledger in project level I'm going to log into project

  12. 5:51

    Apple and I'm gonna enter the ledger that is the one that's hosting this app so this is this letter here I'm going to click on it if I go to live data I see the three assets that I am seeing on my front end my niece just logged in so I'm seeing that I mean usually the new user entered my application I'm not able to see their data I actually navigate this tool to cure because Manish has their own data even though that I'm a creator of this application I still can't see things that I'm not permission to see but now

  13. 6:26

    since Manisha's is older what I can do is I can fetch his party ID from this drop-down right here so my niche copy the party ID I'm going to switch back to my template and - you said you want the car right so I'm again faced many issues party I'd be the cube and all of a sudden I remain the issuer but the owner of the assets a strand okay let me see if I have the car now yeah I have the

  14. 6:56

    car and yeah I think users can't see it so let me just share my screen quickly in between for one second and show them that I indeed have the car okay so everybody can see my screen you see that Oh Demetri also gave me a television so I have a television and a card from Dmitri and this is the issuer so I'm going to give it back to Dmitri now so you will see the car as well as oops and

  15. 7:31

    the television and on Dimitri's back screen now let's stop sharing Dimitri yep thank you and now we're back to the initial state where I remain the owner so that's what we're going to be working with we're going to extend it to add some quantities so to make fungible assets and then we're going to also add some functionality to be able to split an asset but has some quantity into

  16. 8:03

    smaller parts and also use multiple assets to merge them back into the same pot so let's go ahead and do that I want to look up from here and oh by the way before before we start getting into codes I just want to show you where we're hosting the the SAP template and you can find that alone yourselves and use this is the under the digital asset repository there's a demo UI template this is open source like we have a Apache 2 license for this and

  17. 8:34

    it's finished the instructions should be pretty straightforward to to follow alright so let's go ahead and get into some coding okay so what I'm gonna do I'm gonna involve invoke the damn ol assistant and I'm gonna create a new project but I'm gonna call let's say meet up so all I have to do is down on you meet up hit enter and I get a notification that a new project called meet up based on the template skeleton has been created if I search list all the elements in this directory I see that the meetup folder

  18. 9:13

    is so what I'm gonna do is I'm gonna change directory in this folder and launch the Visual Studio code so I can started okay great let me make this a bit bigger for everyone to see and this is the skeleton project it has two demo files and to download files here some in some configuration demos and I get ignore I'm not going to meet much of this what I'm going to do is I'm going to delete the setup

  19. 9:51

    I am going to write my demo language version which is 1.2 here I'm gonna lose my scenario and what I see here is essentially the asset that was present on the demo new item but for me I pick on the land application just displayed so if you remember the asset has an issue which is a party an owner which is another party and a name which would be a TV a car or a lab so I want to extend

  20. 10:19

    this right so what I'm gonna do is I'm going to add let's say an amount since I want to make it fundable I'm gonna make this a decimal I'm going to use damage precondition to ensure that the amount for this asset always remains actually positive and I need to add two more choices in order to be able to split this into multiple split an asset into multiple different ones with smaller amounts and merge them back into one so let's go ahead and do that

  21. 10:52

    so I'm gonna call this choice clip I'm expecting this to return a topple of two assets and four arguments of this choice I need to split amount I need to know how much is going to be it's obviously it's going to be a decimal and I need to create a split contract i-beam and this is going to King I'm going to recreate this with the amount being the spin amount and I also need the remaining so

  22. 11:34

    I'm going to call this rest CID also you need to create an asset but this time the amount is going to be the amount - laughs at least I need to return the top on so I'm ENGLISH that should be it for the split choice yeah so Dimitri while you are there just wanted to clarify a couple of things for the four so when we started I told you the Demel automatically takes care of authorization so as you can see overall the structure for it is there's an asset and the choices which are give and split

  23. 12:16

    here they represent the actions that you can take on the asset and the the built in authorization comes from the fact that you that you've specified what are called controllers so in this case the owner is the only party who can kill and split if the issuer wants to give or split they have to be the owner of the asset otherwise they will not be able to exercise these choices so in your application your development is very simplified because you don't have to

  24. 12:45

    keep checking for this every time something comes in because you know that the Demel run time it's going to stop those unauthorized actions from taking place cool thanks for my leash so let's go ahead and add the last choice here called merge so we're also implying that the the owner is still the controller of all three choices don't need to rewrite the controller owner can on each one of them then for merging the result is going to be a single asset ID we'll need

  25. 13:18

    to put this in parentheses and we need that argument that the argument is going to be the other asset that we bring in in order to merge it right so I'm going to call this other asset and this is what going to be of type asset ID and what I'm gonna do is I am going to fetch the other asset from its contract ID by invoking the fetch command and I need before I merge the asset with the other asset I need to

  26. 14:00

    assert that the actual owner and the name of this asset is the same I can't be merging apples with oranges or I can't be merging dollars that I own with dollars that many shows so let me go ahead let's go ahead and assert that so use assert other assets but let's say owner is equal to this asset zone and I'm going to do the same thing for the issuer and I'm also going to do the same thing for the name of it so these are the

  27. 14:40

    necessary conditions for this choice to move forward now that we know that what we need to do is we need to archive the the contract that we're bringing in the other asset so archiving and we need to create a new one with the amount being equal to be existing amount plus any other assets hope this is pretty straightforward to everyone given that this is the last statement in the choice it's automatically implied that we are returning this which matches our return type so that should be it for our demo

  28. 15:26

    model there's one more thing we need to do here is to go to the download on Yano file given that we've deleted our setup we no longer need this parameter here great so what I could do next so just one quick observation again anyway three days I just wanted to point out that at the beginning I said ml is is a smart contract language it's actually it's actually helps you model your business

  29. 15:55

    processes wherever there are rights and obligations and workflows between multiple parties it allows you to model them very easily and productivity is really high and you can see here in within you know about 45 40 lines or so you created an asset you've given the ability to automatically do authorization checks and you've automatically given the ability for the owner to give the asset to another owner split the assets merge the asset you

  30. 16:20

    know and all of that so within 35 or 40 lines of code and that's essentially why you know I mentioned that all you need to focus on is your business logic as you can see there's there's literally no holding here at all on how your application needs to work and this is exactly how it is going to be deployed on project applets okay so now I'm going to do two things I'm going to go to

  31. 16:44

    project dabble and start creating a ledger that is going to host this new model and my my UI that I'm gonna bring in from the demo UI template adjusted accordingly in order to support this new model and while these are happening I am going to smoke test this demo model as well in the local development environment that I have by using the demo system so let's go ahead and do step one first so I am in project album I go back to my workspace and I need one

  32. 17:19

    more ledger here so I'm gonna go click on options create a new ledger and I'm gonna name this again and I see notification that my ledger is being created this is going to spin up some infrastructure dedicated the infrastructure for for my account and this will need the few minutes to to go live and be ready for me to host my application so while this is baking what we could do is we could go back to our terminal and smoke test the application

  33. 17:55

    should be done a model orchestra so what I could do is I can invoke the demo start command which is another command from a demo system I will spin up a local development user interface for me to test my mouth so I hit start and I see that my my demo is getting compiled into a dar and then a sandbox is started locally on my machine and another tool called the navigator which is the

  34. 18:26

    front-end development tool it's also launched on my local host in Israel for me to check my models so I can go ahead and log in as Alice and if i zoom this in a bit more if I go to the templates page I see that I have the asset template that I just created so I'm going to click on it and as Alice I'm gonna create an asset I'm gonna make is let's say the TV actually because now we have fungible things we can't split TVs so we're going

  35. 19:02

    to let's make this United States and we're going to use thousand second submit I see the checkmark and then an asset should be popping up so an asset is just fucked up if I click on it I see that alice is the issue and the owner of US dollars of a thousand and let me now test my my new functionality so I am going to call split and I mean the split amount let's make this three hundred three hundred seven hundred split click on submit and I go back to my contracts page now I do see that I have

  36. 19:41

    two contracts and an easier way of seeing this is going to templates and clicking on this little agreement button here and I see that the thousand dollars have been archived and now I do have three hundred and seven hundred at once and just see my active contract which are those two so that's that seems that my split choice is working let me try my merge choice as well go ahead and click

  37. 20:06

    on this here and I want to invoke merge and I'm going to merge this with the contract ID of the other one which is to hit submit that's exceeded and now if I go back to contracts I have a single one if I see the archive the 300 and 700 have been archived and the only one I have is a single one and I should expect that this quantity is back two thousand which is the case so it looks like my

  38. 20:38

    damnable is probably working my explaining merge choices and what I'm gonna do next is I'm going to actually create a UI for my application and launch it and to project that yeah there's one other common inventory so you saw the archived contracts that is another feature out of the box that demel provides which is that you cannot operate on a contract twice so he merged three hundred a thousand contract he splitted into two contracts so he cannot split the same contract again he cannot sprint the same object again into two

  39. 21:10

    other fields because the contract is automatically archived so this is something that again you know aids developer productivity significant great so let me quit my local stock and clear my terminal here and then the next thing that I need to do is I need to go to the demo UI template and clone some code and bring it into my projects so what I can do here is I can get out of Meetup and I'll go to my down on UI template page clone this repo let me

  40. 21:46

    copy the clone link like here and say we get clone and okay and then let me open a Finder window so I could move over my the assets that I want for my application okay so in the demo UI template I'm going to select everything and I'm going to deselect the damn oh damn oh yeah because I rewritten it so I don't need to bring anything over and I'm gonna copy this and paste it inside

  41. 22:17

    my so now I need to go back to my Visual Studio code and I see that the UI assets have been added before I proceed with editing the front-end code I need to rename my some of the boilerplate code given that my project name is called meet up and not down on that so let me go ahead and do that so I'm going to search for every instance or demo do i template and I'm just going to replace it with

  42. 22:53

    you play song and that should be good enough okay so now what I need to do is I need I'm going to use the JavaScript version of the UI data type script version as well if you're familiar with ice cream and you like strongly contents and what I need to do is I need to incorporate the logic on my report page to allow for those two new choices so if I go to pages report important is I do

  43. 23:24

    see these four fields that I was seeing in the and a single action called gig that was able to give TVs laptops and cars so let me do the same thing I had two more choices for the choices I added as well as the amount field that yet probably this paste it twice and then rename the give to split and also remain and I also meter I also need the field or amount and for reactions I have two

  44. 24:10

    actions I'm going to copy this once and I'm going to change this to split and for new owner this is going to be in split amount and my choice is I'm going to use my new choice bold dance with and as a placeholder here I'm going to say and last but not least for my merge we're gonna change this to merge and merge needs number a so typing so and the placeholder text for this let's make

  45. 25:01

    okay so this may be one 1k question here so in this case our asset was the same as the default the template name was the same as asset so in case the template name is different all that the users have to do is to replace asset with their template name right yes there's one more step we have if you can see here is a library called demo to TS this means that we generate typescript components all from your demo model now given the similarity of the demo model that was on the UI template and one we wrote we don't really need to

  46. 25:38

    change the naming here but if you have a completely custom model what you can do is you could run the code generator which I'm gonna show right after this and it's going to create those typescript assets for you which you can then use as I'm using on this one your application so let's go ahead and follow the steps to do that I'm going to save this file and I am going to go to the

  47. 26:09

    reading and there's a quick start but there's also a deploying dialogue section right here that I'm interested so I'm going to go ahead and switch back to my console and the first thing I need to do is I need to build my demo so I'm just going to issue here my meter folder and I'm going to issue okay so my my demo is compiled next up is the code generation step that I just mentioned so when I copy over this line and what this does is it reads my the

  48. 26:54

    compiled dog and it generates those typescript assets that I can then use in my front end so this gives me some output that generated the appropriate the proper construct the next thing I need to do is because I have a nine month I guess we need to fix the instructions here as well to add one more step is I need to do a yarn install workspaces run install this is a something that you need to do only once and then you can keep on using the logo

  49. 27:31

    let me invoke this and this is going to take some time to build and we'll show (--> Use yarn workspaces run build, not yarn workspaces run install) you done with the install step and we'll just need to run the bolster okay my yarn workspaces run installed step is finished so I'm going to invoke the yarn workspaces run build stick this needs also some time okay so after some time

  50. 28:27

    my assets have been built so what I need to do right now is to package them up and then drag and drop them in my ledger a project that will keep it so I'll start with packaging my my demo first I'm gonna do the demo build but I am going to output the dart file to parent directory I'm going to call this okay so that's done for my UI for my demo sorry and then I'm gonna do the same thing for my UI I'm gonna go to the UI JavaScript and I'm gonna say is it

  51. 29:16

    unhappy directory and I'm gonna also out today on the parent directory I'm gonna call this and what I'm going to zip up is the build folder that was created by rainbow people okay so that should be done and then I can open my story window and I see those two assets that are just those two funds that I just created I'm going to click on them and then just drag and drop them on the return of the

  52. 29:55

    collections great if I expand I see that they've made it through so I click on them and what I do is I click on deploy I'm selecting the webinar projects and the meetup ledger when we click Submit and I see that I get to success notifications for my dart file in my zip file and these two artifacts have now been uploaded to the ledger okay so now my meetup ledger is ready after I

  53. 30:33

    uploaded my assets all right to it so I'm gonna click inside and I see that indeed I have the mihrab bar I wonder my demo models and if I navigate to the UI assets I see that I have my UI as represented a static asset and I can I haven't published it under in my site so I'm gonna go ahead and do that click on publish we get prompted if I want to agree I confirm and now I should see

  54. 31:03

    that my assets have moved into the published State and there's a little link here that I could visit the site that are published on well subdomain that the publication happened is given here it's basically the ledger ID that project that will come so I could just go copy on the URL open a new tab paste it can enter the project double automatically gives you a hosted version of your web app as well yep and let's not confuse the two let me dismiss the

  55. 31:38

    old one so I have the new version of my apt apart I'm gonna take logging with dabble and I am in I have an empty view but now I can see that the amount field but we wrote this here and I have the split and merge choices like that so let's go ahead and try this out what I'm going to do is I'm going to create an asset and then I'm going to invite Manish chop some of it off and then transfer so

  56. 32:09

    let's do that click on my console here go to black data and add a contract scroll down to asset and now I see that the asset has the amount field as well so I'm going to become the issuer the owner I'm going to use US dollars and I'm gonna issue a thousand dollars submit and I see an answer gets created here if I switch back to my template now I see that a thousand of US dollars showed up here let's test the split so I'm gonna again do a three hundred seven

  57. 32:47

    hundred split great my amounts have changed to 300 and 700 let me study this even further to let's say 100 okay great and let me test my merge functionality so I'm gonna I'm gonna merge the hundred with a 700 so I'm going to go here and type in 28 1 which is the contract ib of 100 merge rich and i have a 200 800 split which is what I was looking for let me invite the manage to this new

  58. 33:22

    application I'm going to copy the URL I'm going to paste it as well on yeah so I have the URL now and just like before I'm going to log in to project level so that I show up on Tim increase ledger and then so he can give me the give me the asset yeah I'm logged in Dimitri well I see you let me go fetch your party ID okay and I am going to transfer you when the give choice the owner has changed here to the niche for the amount

  59. 34:21

    of 200 and - would you like to share your screen split it and give me back some smaller amount for me 200 yeah sure I do see the 200 so let me share my screen now and show everyone how it works yeah so as everybody can see on my screen I have $200 so 200 ya USD and I'm going to maybe split it and give 100 back to Dimitri's so yeah now I have $200 assets and I'm going to give $100

  60. 34:58

    back - I need to type in Dimitri's user ID and I'm going to give him back $100 so I'm left with 100 okay and I'm gonna give it back to you Dimitri so you can check thank you back to back to my screen we see that uh I do indeed own $100 and given and the other hundred dollars are owned by Manish but I remain issuer know all of these assets and that should be it perfect that's so you see how we had a concept we created a quick demo model for it which was you know about 25 to 40 lines

  61. 35:54

    of code you know because Gamal is a very purpose print language and then of course we were able to reuse the demo UI template which is written in react we were able to make some minor changes and we've got a first application up and running on devil completely publicly public-facing so you can send the URL to all of your stakeholders and get them to try our app out and validate your idea

  62. 36:17

    and then and then go from there this one more thing Dimitri I wanted to share with the audiences if you could show them on the docks the API is that the ledger exposes automatically in case they want to write their own react stuff you know like instead of using the template and also if you can show them quickly the login with double button on the docks I mean we don't have to code it just show them where they are sure thing back to sharing my screen we have

  63. 36:50

    a little Doc's link what you can click here that gives you a getting started guide as well as the API documentation this is on dogster.com if I click on the API documentation I see that all the endpoints that I could read contracts and exercise choices and creating contracts are listed here and there as well as some guides of inviting onboarding people to the letter which means leveraging this login with dabble button which is pretty simple to

  64. 37:22

    integrate to any front-end application which is essentially a button that redirect the user to a login link and passes in the ledger a key of your of your deployed ledger perfect yeah that's it so anybody who was wanting to write the stuff from scratch instead of using the template they can just use these simple API is exposed on the Left automatically by devil when you upload your ml model and then you can write your UI and host it on project SS as well so I think there you have it just one final point I

  65. 37:57

    wanted to make so you know we we looked at demel and then obviously we looked at devil as well the one nice thing about demo is that you know we referred to the word contract every time right so for people who are new to the smart contract world contracts as you saw are just another word for writing classes and objects you know you can think of them in that way with obviously the many

  66. 38:23

    benefits that that using such a paradigm offers the point I wanted to make was now that you've written your applications in demel demel obviously is portable completely portable across a variety of ledges so in case you know folks who are writing blockchain applications for example you could easily use project able to not only prototype but also go live but in case your project requires another ledger like for example you want to deploy it

  67. 38:50

    on VMware's blockchain or coder blockchain or you even want to deploy it on say Amazon's QLD be-because demel runs on databases as well your code is absolutely completely portable all you have to do is follow the party provisioning user user provisioning guidelines of the new ledger but everything else in your application including your front-end and all your de metals are completely portable and obviously project able

  68. 39:16

    provides you a way to go to production production but in case you want to deploy to another infrastructure you know your your application code is completely portable so that's it so you know so I think we are done thank you so much Dimitri for showing us how we can go from an idea to writing your front-end writing your business logic hosting your own project RL and going live and hope it helped thank you very much