Build a "No Code" Application with AppSheet and Google Sheets | Micah J. | Skillshare
Drawer
Search

Playback Speed


  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

Build a "No Code" Application with AppSheet and Google Sheets

teacher avatar Micah J., AI, Data Science, Data Visualization

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Lessons in This Class

    • 1.

      Appsheet Google Sheets Intro Video

      1:13

    • 2.

      What the app we're going to build looks like

      2:06

    • 3.

      Google Sheet Building (Backend "database")

      5:33

    • 4.

      Initial app configuration in AppSheet

      5:35

    • 5.

      Setting up our data and basic design

      2:16

    • 6.

      Conditioning the input form and setting rules

      2:34

    • 7.

      Defining form aesthetics

      3:43

    • 8.

      Expressions and more form work

      5:50

    • 9.

      Behavior and action triggers

      4:17

    • 10.

      Creating second view with chart

      5:50

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.

438

Students

1

Projects

About This Class

In this course you will learn..

  • How to build a basic data structure within Google Sheets
  • How to build a basic application within AppSheet

No programming experience needed! You will be using free and open source cloud software to build this app.

AppSheet

Google Sheets

This class is only 39 minutes long in total (including intro) and it's a great project for those of you who want to learn how to make useful applications with readily available technologies.

I am always here to help! Please submit comments and ask me questions here on SkillShare.

Meet Your Teacher

Teacher Profile Image

Micah J.

AI, Data Science, Data Visualization

Teacher
Level: Beginner

Class Ratings

Expectations Met?
    Exceeded!
  • 0%
  • Yes
  • 0%
  • Somewhat
  • 0%
  • Not really
  • 0%

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.

Transcripts

1. Appsheet Google Sheets Intro Video: Hey everyone, I'm the instructor of this course. My name is Micah. And I'm going to tell you really quick what you can expect to get out of this course. Should you choose to watch the rest of the videos and take this course? So what you're going to learn is how to create a really simple application using Google Sheets as a kind of a database or back-end free app. And then AP sheet for the front end of your app. And you don't really know, need to know what either of those terms mean. You just need to know it's going to be super simple. Reason being we are going to use something called no code to actually teach you how to code this application. So this app is built using an interface where you just drag and drop things around and change settings. And you don't need to know how to code at all. So if you don't know how to code, but you want to learn how to build an app and you want to learn how to build basic data structures that enable apps. Then this is a great project course for you. We're going to learn how to make an application. And you can see a picture of the application right here. It's a super simple app just for a internal billing company that sends invoices for accompany. So if you choose to take my course in great, I can't wait to hear your questions, feedback, and teach us something. 2. What the app we're going to build looks like: All right, so let's go over the functionality of this app. This is already completed version of the app, so I'll just show you what we're going to make it the end. And that is this. Everything you see here on the screen is the application. This is a mobile-friendly app. So it's going to be able to work for mobile devices or web or, sorry, or desktop. And let's get into the functionality here. So pretty much we just have our unpaid and paid him voices. This is all just dummy data here. We're going to be able to see the invoice, the amount of it. We can edit the invoice, change a couple of things about it, the price description, the contact information when they pay it, we can say that it's been paid. We can actually mark that as been paid whenever it is paid. And it will make us at the back there, save is still unpaid. And then we can issue an invoice link. And we'll even even be able to go in here and actually send a payment reminder to the actual customer to remind them that they have an invoice that's due if they haven't paid us yet. And then on this other screen we have a nice little pie chart here that'll just show us how many paid versus unpaid we have at any given time. So that way we know who to kind of know harass, but we can see Dan and Lloyd and Tommy have not paid their invoices and that's it in a lot of money here for Tommy, right? So this just gives us an app to track that we can go ahead and add in a new invoice completely blank, right? And that'll give us, our team just something to work inside of. So this, this app right here at the goal is for the team to be able to use it, for it to provide value to the team, and for us to have a more effective engagement with the customer. So this is what we're going to build. And in the next couple of videos, we're going to get into actually building it. 3. Google Sheet Building (Backend "database"): So let's go ahead and start building this out by defining what pieces of data or information we want to gather. So go to Google Sheets and let's go ahead and start a new blank spreadsheet. Alright, once we get in here, I'm gonna go ahead and give you these columns. We're going to put across the first row. It's going to paste them in here. And you can go ahead and pause this video and go ahead and copy and paste these from the guide that we'll have in the resource links are linked below this video depending on where you're watching. Or you can just pause the screen and just type all these out. Okay, Now that you've gotten those all put in here in your spreadsheet just like mine. Let's do a little housekeeping. Will just give you a sheet, a name. So it's something other than untitled spreadsheet just so you can find it later. So we'll say playing app training video. That's for me, right? Okay, So then I'm going to go through, and let's real quick explained some of the fields. All right, so let's explain what each of these columns do for us and why we added them in here. So first and foremost, we got our invoice ID. So this is just going to serve as our primary key for every entry that's going to come in here. So each of these rows is going to be an entry by itself. So eventually, one day, we're going to have hundreds and hundreds of entries in this app and theory. So each one of these is going to have an ID and it'll just be a string of random characters. So we something like this. And this is just dummy data just to sort of give you a perspective on what it might look like. Okay. And then the amount, so the amount is that dollar amount. That's specifically the amount of money in the invoice. This might be 608,006. These are all valid values for the ML. These are all going to be dollars, but we don't have to format it specifically in the sheet. Will format it on the other end in AP sheet. So description. Okay, so this is going to be what our invoice is referring to. So we'll say goods and services. Just because I feel like good. All right. So this is whatever the reason is behind the actual invoice, write the date issued. So the DEA issued is going to be the date that the invoice was given out. So let's just say that was a 12, 21. Right. And then the due date will just say that that's 30 days later. So let's say that's not doing the exact math, but 91221. All right. So we'll say all of our invoices or do 30 days out in this scenario. So something like this will be the case for the date. Let's drag those down. Let's say that every day we're working in issuing a new voice which is due in 30 days out every time. So customer e-mail. So Dan and mail.com. Mail.com. These are just the customer's email. This is important because this is who we're actually going to send the reminders too. Customer for customer phone number 77. Right. So let's say that's a phone number, Billing team, e-mail. So this is the email of the Billing team. So say set our company.com, write the date paid. That's going to be a date, but it's not going to be filled in unless something is paid. So we'll just remember that that is their only if these are paid. So if this was paid and we'll say that this was let's say they paid it late. Be like maybe they paid on the 15th after we were like, hey, where's our money? There's that. And then the status, the status is going to be one of two values. So the status of the payment would be unpaid or paid. In this case, we should do paid. Unpaid. Right? And the invoice link, that's just going to be the link to the third party solution for invoice payment capture that you have. A lot of people create invoices through PayPal or some other solution. So let's say like PayPal invoice.com, and that'll be the invoice link. That'll be where the customer actually goes to pay the money. They actually end up going into your company's bank account or your bank account if you're the, you're the company, right? So this is where all these fields mean and these, this is some data that we can use to work with. What I'm going to do now is I'm going to fill all these out, mainly in these spaces just so that I have a variety of data. I want to have some paid stuff, it's overdue. Some paid stuff that was paid on time and then like two On page. So I'm going to set that up real quick. All right, so there's all the dummy data right in there. Good to go. What we could do now is we can move forward to actually building out the app now that we have this dummy data to play with, and we'll be adding some more as we go along. 4. Initial app configuration in AppSheet: All right, so it's time to start building our app out. So let's head over to App sheet, login, use your Google account, and then hit QuickStart, same, make a new app. All right, So I'll say start with our own data and then we'll give it a name. So we'll say link app, training, video. And let's go ahead and it doesn't really matter what category you say. Let's say marketing. And we'll choose our data. And then let's see right here. Let's go down to billing App training video. Select our data. Boom. Now we got that. And it's setting up our app. So all that dummy data that we just had over here. We're gonna go ahead and use that as the foundation of our application here. Okay? So you can see what it starts us out with is not necessarily want it. We want it to be, which is fine. We're going to change it over and we're going to make it exactly how we want. So when we start out, we've got our paid and unpaid and then we have we have the amount there. But it's not dollars, right? We only have one view. We don't have our chart. So we got some work to do as far as moving forward. So right here in this interface, we are going to be using some of these on the side column right here, and some of these over here. So some of these options mainly going to be living between behind UX behavior and data. So get familiar with those. Feel free to pause and just start to like poke around. You're not going to break anything. You can always come back to this point and poking around us honestly, where you start to get the most experienced from the whole thing. So what we're gonna do to begin with, let's go ahead and we'll go into here. And let's try and make this view right here, this UX view into a deck. And you can see as I kind of switched around and change these fields, sort of see the different view types that there are. But I think we want a deck. That's kind of the way we built the other one. Well, we can also say where we want the position of this bottom thing to be. So we're going to want that on the left side when we add the other view so we can do that. And then we'll change the view name. So we'll just change that to just like invoices. All right. And then let's do this. Let's go ahead and sort them by, sort them by status. And then we'll do descending so that we will get the unpaid at the top. Or we should be, let's see. Status, ascending. Be sending groupby status and decent name. There we go. So that's what I wanted to buy. So we'll sort by status descending, and then we'll groupby says descending. So we'll have the unpaid first and the paid. So eventually when we have a 100 invoices in here, it'll only show us the unpaid ones, which should always be a small number that we're always trying to focus on as a team and will eventually just get rid of them. Another thing we'll do if you see right here, you can see this is the unique ID and then the amount right here. So what we're going to actually want is here under primary header, this top piece is the primary header. We're going to want to say, let's do this. We'll just say customer e-mail so that way we know who it is. And then we'll do our secondary header as the amount. So we'll have it real quick. Bob owes us 8 thousand. Dan paid us 600, and we just have that real quick snapshot there. And that's, that's really all we want out of that. Another thing we have to is all of these little icons. These are actions so we can compose email, sent a text message, phone call, email again, edit or delete. For the purposes of this app, these actions right here, we're going to go ahead and just add in, delete and edit. And we're actually going to switch the order of those are in because that's really all we want. If we want to delete a envoys because maybe the customer returned it and they're not really no, not going to pay it. And we'll just delete it from the record. Act like it never happened. Or if we want to edit it, That's going to be the main functionality that we want. All the other actions maybe not as relevant at this point in time. So we're just gonna go with those basic ones. And then if you go to the Display section here, click this, this icon right here. You can see this is just kind of a little generic stack, but let's go ahead and get something that's more like related to what we're doing, like money. So we can do like a message in money or maybe like an invoice envelope with some money in it were like a bill that's kind of like a bill icon and we can kind of go with that. So let's go ahead and we'll put this in here. And that'll be sort of this view as a whole. And we'll just hit save. 5. Setting up our data and basic design: All right, so from here, let's go ahead and address the next clearest problem. The one to me that stands out is that we don't have a dollar sign in front of this character right here, or this amount field. We don't have that. So let's get that right. There's a couple other issues as well. But once you sort of test the functionality, look at this, we can see that doesn't have a dollar sign. So let's go ahead and close this up. We don't really need to close it up, but just seeing, Let's go over to Data. And then let's click on this dataset, this data source here. And then we'll hit View columns. Okay, so now this is everything that we have in here, all the columns. And if you kinda scroll to the right, actually let me collapse this. We can see, here's everything that's going on right now. So we can see a couple of things are going on here with our types and we'll get into all this stuff in a minute. But let's just go straight to the amount column and it's a number. But let's go ahead and change it to price. And then once I save that, this should now reflect with a dollar sign, right, cool. So now we have that dot scree. Think we're doing good. And the next thing that I see that's most immediate is we had our initial app demo was a dark theme and this is blinding me. So let's go over to UX and we'll go to brand. And then we'll change this to dark. And there we go. So we can do dark with red, highlight, yellow, any of these colors, custom color, whatever you want, I'll just keep a blue. We can add an app logo if you have a custom like your company app or anything like that, we can do all of those things. And then we have a couple different options here. This one being mainly that we just have a header there for you. So we know we're at in the top-left corner, but you can kinda do whatever you want. Just hit Save after you're done, changed, get to dark theme. 6. Conditioning the input form and setting rules: Okay, so let's take a look at how our form that captures our data about the envoys functions. Let's actually look at that. Let's open up this brand new invoice emission. Let's look at this one thing we're gonna deal with a little bit later is that all of these fields right here, they're like lowercase and they had the CamelCase, which is what? This is where I'd like a lowercase, unlike an uppercase in between the second word. They have that. And we don't have, the most important thing is we don't have a status dropdown here. Let me show you how to do that. We're going to make a status dropdown that has paid and unpaid so that we can have those two values. Let's go ahead and do that right quick. So go to Data, View columns. We can kind of closes, so we have a little bit more space here. And that's going to status. And instead of text, we're going to make that an what's called the enum list or enumerated list. And then we're gonna go ahead and click right here on the little Edit button and values we're going to add. So I'm going to say paid and paid. And then once we've got those in there, we're good. The only thing we'll have to do is say that the initial value is going to be unpaid. And we just type that into there. All this stuff down here in the expression assistant will deal with a little bit later for other fields. Don't have to worry about it for, for this right now. And then just hit Save. Okay, cool as Popper out back. And then let's see how this works. Now that we go into this, again, go down to status, looks like you can get paid or unpaid. And this is a nice way to have it setup, kinda click on it, and then I'll click to select. But what I'm actually going to do, what I forgot to do was just go in here to status. And then I gotta save. The input mode is going to be dropped down. Then once I save this, I'll see what I mean. We have a drop-down. I think we already did in that past few, but I just wanted to refresh it so that it'll be okay on paid by default. Then we can switch it to paid whenever it's paid. Cool. So that's how we fix that is how you do an enumerated list. Super easy, right? 7. Defining form aesthetics: Okay, So remember where I pointed out that all of those values in the form we're set up to be lowercase and not like, didn't like look nice inside the form? Well, that's called the display name. And what we're gonna do is we're going to change our display names so that they look pretty. So. We'll go to data, the columns. And then you see right across a line here, we have a display name. So we'll go to, we'll just, we'll just do all these invoice here. We're actually not going to need to worry about that. We're actually going to hide that. So that's, that's a good point here. If we hit show, uncheck that, then we won't have that shown. But if we wanted it to be shown, we could have the display name look nice amount. And we can even add some more contexts like we don't want just have to have a straight up value. We're going to be like amount to be paid. The same amount, that's fine. But if you wanted to add more contexts, you could with the display name, description, date issued. And that's when I'll call I'll say date invoice issue is to give it a little bit more context. Voice and their customer e-mail, customer billing team e-mail. E-mail. And this is probably going to stay the same pretty much the whole time. So we're actually going to remove showing that one, the paid. Let's do that one. Status and voice link. Okay, cool. So let me go ahead and hit save here. And then this will update and we're getting these little warnings here to say, Hey, because you hit those invoice, those columns, you're not going to be able to see him. Yeah, no problem. So now we have basically everything that is going to be required for an employee of the Billing team to enter and nothing else. So that way it's like really simple. So just amount description, date, issued, date, do customer e-mail, customer phone number, the date that it was paid, and then the status is on paid by default. And then the invoice links, we can put that link in there. 8. Expressions and more form work: Okay, so there's a couple more aspects of the form or just the overall data as it's crafted by AP sheet as it goes in, it's logged into the Google sheet that we're going to want to change. So within this form, within the data section of app sheet, we're going to change a couple of things. So one of these is the date invoice issued, day invoice do so these are the same date. And the reason that is is because both of those are pointing at the initial value of today, which is a dynamic value of the just figures out what today is, and it just adds that in as the, the current value, right? So what we want to happen is we want, It's actually be this date plus 30 days. That's what that needs to be. That's going to be we want. Another thing that we're going to want is we want this invoice link to just be formatted as a link. That's pretty easy. And then this date paid, all date fields are pretty much formatted with this basic today. Like default thing in there because usually just assumes that you just want to be logging the same day. So we're going to take that out and we're going to format to be a link. So let's get the easiest 1 first. So let's go to here. Where is URL? Url, also known as link. Boom. Once we set that up, we will have that we don't know what the invoice link is going to be because ideally, it's going to be different every time for every separate invoice. So we'll deal with that. And then date paid. I'll just go in here and we will take today out. And then we'll hit Save. I like to hit Save all the time. So that that way I always know that everything is up-to-date. And let's check this out. Let's see what we did. They paid nothing. Is there yet invoice link, it's ready for us to give it a link. It knows that this is going to help with formatting just moving forward at all. You'll know that stuff. Only thing we have left to do is make this 30 days ahead. And we're going to write a little simple formula for that. So this is really easy. So let's go to date do. And what we're gonna do is with this expression assistant, There's a million things you can do with it. But I actually have the formula already copied and pasted. This is what we're going to, we're gonna do and I'm all kind of explain that. So what we did was we got the formula for date, which is what this is right here. So date, right? That just says, Hey, I want to date. I want to format whatever my output is, a date. And then if I go here, I'm saying I want to grab this column date issued plus 30. So it knows whatever I'm asking for. Right here is a date and then it adds 30 to that and it formats the whole thing as a date. That's essentially what it does. So if you ever wanna do anything manipulating columns that you already have, you can take like, I could take the amount and I could add a tax on to it. So I can be like amount plus $3.50 and then that is some other column, right? So that this, this allows us to write these functions and this is the function to get plus three days. So more functions that come in other lessons in the future, there's lots of infinite amount of things you could do, but this is just one aspect of it. So let's look here. Wall. Ah, so we got our date that it's issued, which is right now the date the invoices do. So what we did is we just automated with a formula or workflow in which a somebody would have to actually go and calendar and go through here and like count the days or use some sort of calculator to determine when 30 days was. Instead of that, we just had the code do it behind the scenes by just giving it that simple formula. And we didn't even write any code. We just wrote an expression that just said, give me that. Okay, cool. So the only other thing that I'm thinking of is the Billing team e-mail. We're going to want that to have an initial value, just whatever we we want for our team e-mail. So I'm going to be like team, team building my company.com, right? So that's going to be the billing team e-mail. So this is like the default email that all emails will be sent from or come back to a, we can just use as a data point there. So, okay, cool. So we've done a lot of data conditioning here. That way our app is getting the right input. And it's going to do two basic correctly. And there we go. So let's go through, I'm going to go through and do a couple of entries. You do a couple of entries, maybe like three or four. Just add in some more invoices, just make sure you see how this form is working and how it works out. Just add in dummy data, have fun with it. Just make up some funny emails and some funny phone numbers and have a variety of data, have some that are paid, some that are unpaid. If they're paid, give them a date paid, and then just do a fake link for this. 9. Behavior and action triggers: Okay, The only thing we have left to clean up is we're going to want to make sure we require a couple of fields that aren't required. So our description, we want a description every time and a status invoice link every time. So we're going to make sure that those are all there. So that way we get the data we want when we want it. And we don't let the user decide when they want to input something that we needed because that can lead to breaking things. So let's go ahead and move on from that now that all of our data is officially condition, which I thought in the last video was. But let's move on. Let's go to behavior. And we're going to add an action because we're going to get that, that crispy ability to go ahead and email people with a click of a button. So new action. And we're going to say something like customer payment reminder. Okay? So when we go ahead and start with this, so we'll say do this, do this external starting e-mail. We'll say two. And we're going to say customer email. And the subject, I'm going to prebaked these four. Yeah. And I'll have available for you to get essentially the subject. We're going to put kind of whatever we want. But we're going to add in some of the dynamic values, dynamic values being these columns right here. So it'll, it'll run something like this isn't the exact thing you want to put in here, but we believe in and say something like, Hey, on date issued or they do pay on date, do you owe us amount? Okay. So you see where this is kind of going, right? Okay, so let me go ahead and get those values in here and I'll show them to you. Okay, so for the subject of the e-mail, what we're going to use is this concatenate function. Concatenate means just to put together. So we're adding in text in between these quotes, and then we're adding in the dynamic columns, which we kind of talked about a little bit already. So we're going to say a friendly reminder to pay dollar sign and then immediately after will be an amount and then we'll put us no space here before your due date of whatever that data is. So that'll just be the subject line. And then for the body, we're going to say concatenate your balance of whatever amount needs to be paid. Click this link and then we'll put in our invoice link and this link text formatter function or formatter that just takes the invoice Lincoln, it makes it able link. And then C to pay your invoice. So to show you what this looks like, if we click on here. And so this should say with whatever e-mail you are running, I'll say to the customer's email done dynamically loaded in here, a friendly reminder to pay $600 before your due date of this date, your balance of $600 needs to be paid. Click this link to pay your invoice. So boom, right, so this is the dynamic emails we're talking about, right? So this does what we wanted to do. And great. So now we have that in there. We're all good to go. I'll make sure that you all can get a hold of these in the resources section. So that way you can modify these to be your own. Just make sure that you have commas in-between each dynamic or text value. And you have quotes up for the actual text text. And then you have these brackets for the dynamic values, but you can just click, click column right here to get that. Okay, so just hit Save and then you should be good to move on. 10. Creating second view with chart: All right, so we're moving on to where we are going to be able to make that pie chart that we showed initially. And we're gonna do that by making a new view. When you hit New View, you have now two tabs in the bottom of your app that you can kinda shift between. And so this one, we're just going to say this is like our paid versus unpaid. And we'll say that this is a chart. And then the type of chart this will be. We'll go ahead and say that is a, I think we want a aggregate pie chart. Yes, I think we do. And we're going to aggregate it by status, say count, chart columns, status. Okay, so there we go. We have to paid and unpaid. So 50 percent of 50 percent. So this is what we want to see. We're going to change the colors. Super easy. So let's go ahead and we got red and green. So we'll have the swap those. It'll be like paid is green and paid is red or whatever color you want kinda up to you, right? And then the label, Let's go ahead and use the value as a label so we can just see, or sorry, the key yep, we see are paid and unpaid. I wish we could get like unpaid too, as like a non hover verbal label. Label and the same with paid. But we can't exactly get that, but we are good to go now we do have functionality here, and if we click right here, we can even see the data just in a kind of straight up table format, which is kinda nice. But let's just go back here, hit Save on that. And now we have this chart. This chart is good to go and it will show us what we want. The only thing for that, like the other one we can go through for the display. And let's just do like Pi or whatever. Let's do something like that. That's a nice little icon, right? And there we go. So right here we've got the two views. We've got the paid versus unpaid. We've got our invoices and we see a little summary here paid to, unpaid to. We can click in here, we can edit this. If you'd like to change the the amount of $0.16 like that. All right. We'll go ahead and change around some stuff right here. Anything we need to Let's say we messed up the customer's contact info or whatever. And we can just save that. We could send them a reminder by clicking that. We can see a quick little display that'll help our team know, hey, we sought to unpaid right now we need to get on those. Let's let's make those are focus. Which ones are those? Oh, it's Bob for his $8,001 invoice. Boom. So that is pretty much the app. Overall if you want to get this deployed. So if I go over here to deployment, right, so there's a couple different things that you need to fill out to get it deployed and I'll cover that in another video. But you can actually have this app deployed and usable just not under the free plan for AP sheets. So you will need to go ahead and give them a little bit of money to go ahead and get the ball rolling for this. For these types of apps, generally what they do is just like a per month per user. So it's like five bucks or ten bucks per user per month to use the app. So if you have like a team of five people using the billing App and be like 50 bucks. But then there's different I don't want to speak to they're there payment plans too much, but you can do that. But you saw how it easily I just built an app that could be like a cornerstone of this entire department all day, every day, right? So pretty useful stuff. And you just made it from scratch exactly for the purpose that you wanted. So there's so many different other applications that you can create that would serve purposes for internal business processes that you can make from scratch right here. And you can power your, your whole business with this and save a lot of time and money just depends on what you need it for and why you need a force. So this already some pre-made solutions, but if you need something custom and in house, this is a super powerful way to get it. So thanks for hanging with me to learn how to make this app. I know that this app is just a, just a practice project, but once you start, once you've gotten through this one, you'll probably feel comfortable enough to start experimenting and creating some other stuff. And the good thing is, is that app sheet has a ton of example apps that you can view on their main page of their website for just all sorts of different cases. So you may or may not have any use cases that would apply directly to those apps. But if you do, that's really great because you can kind of just copy the apps they have and then use them. And then obviously you'd have to deploy them and add your own users in, tweak them a little bit to fit your exact usage, right? Or you could just try to build something from the ground up that's entirely your own and no one else's. So there's a lot of different interesting avenues to go with it, and it's all up to you. So, thank you for hanging out in this course and I hope you learned something. Please drop any feedback below or in any way you can contact me. There should be comments or some sort of contact info associated with this course. So thanks for hanging out. Have a good one.