project and task management is one of the most common things you're going to do in Coda but it is hard to do right I'm going to show you how to do it right from the ground up today in just 20 minutes [Music] all right nothing quite like a brand new Coda dock so what we're going to do right now is build this document live with you what I like to do is always build structure first we're going to not layer on visuals we're not going to layer on pretty colors and things like that yet we're just going to build our foundational structure so for a project management app we're probably going to need three things we're going to need a projects table we are going to need a task table and then for each of those tasks they're each going to have sub tasks so we're going to need three tables eventually I'm going to put those all on the same page but I like to build when I'm first building and put everything on one page for ease of reach so first we're going to call this DB projects let's build another one it's backslash table is what I'm typing in enter we're going to call this DB tasks and next third let's get our third table in here this is going to be DB sub tasks notice that these are all Separate Tables you can tell with this little link here it's saying this is not linked to anything there's nothing else built out of this so these are three separate new tables let's start giving our tables some column names so we're going to call this project and obviously a task and obviously a sub task all right so next what we're going to do is we need to connect these right tasks need to be connected to projects they aren't tasks in a void so how we're going to do that is on the tasks itself we're going to say this is the project that it's connected with if you want to connect to tables what you do is a column type called a lookup so we're going to create this as a column type lookup you're going to choose what table it's connected to projects is where I'm connecting it to same as here the task that it's connected to sometimes I like to call these connected tasks so it's just clearer if I look at this you know five months down the road what is this column doing here reminds me that it's connected via a lookup to the DB task table so now you can see if I have three projects and it's washed the car and we're gonna build a bike and um take over the world those are my three projects well you can see that now this select list right here updates to be in line with what the projects are in our projects table so that's nice and all but we want to be able to tie these back together so let's say that for washing the car we need to buy soap and we need to get a hose because nobody owns their own hose that's too difficult to do we need to connect these right wash the car wash the car all right that's manual that's annoying when you're building a project management app encode it you don't actually want to go by yourself and have to tag these each and every time so we're going to get into how to kind of automate this in just a bit but let's keep setting a bit more of our structure first now that these are connected in this table let's connect them back in this table and this is in my all tasks column what I'm going to do is put a formula here and I'm going to say equals that's how I open up my formula editor fast and I'm going to say dbtasks dot filter so what I'm saying is hey go look into the dbtask table and what I want you to do is find certain rows the rows I want you to find are the ones where the project is equal to this row notice that these two icons are the same so I can equate these right that's a row value chip right there we'll zoom in a bit and that's a row value trip if I said project um is equal to this row dot project notice now that this is actually going to break because this is a row value icon and this is a text value icon those are two different data types and they can't be the same so I'm just going to say this row boom we'll leave it like that now we have buy soap and get a hose awesome notice that if we say build a bike let's say we need to get a bike chain and now I tag this against build a bike notice that it automatically shows up here if I erase columns as well notice that that automatically updates what we're going to do now is we're going to say out of just a few more data and show you why this is important why do we need this column here it is a must please make sure they're here you can do a couple things with this right total tasks we're going to say equals on our keyboard to open up the formula editor we're just going to say all tasks dot count hey count my tasks right one one we can make another one which is get a hose and you'll notice that this is um what's the car now we've got two another thing we can do even further is let's say on our tasks we're marking things as done we'll make that a check box column in order to check them off it's done Boop okay now we can say instead of just total tasks what I can actually do is I can figure out how many incomplete tasks I have complete tasks what I'm going to do here now is I already have a row that contains every task associated with this project now I'm going to filter this too so I'm going to open up my equals uh my formula header again equals boom I'm going to say all tasks dot filter so now just take my tasks here and filter those to where done is equal to false dot count right boom there we go so now I can see that four watch the car there's one incomplete task notice that if I mark this as done that dynamically updates so now my projects table is always going to give me an Insight a quick window view into the actual tasks that I have themself Let's uh show you one more reason why this is so important so let's say you open this row when I open this row I'm opening it into something called the modal view notice it even says view equals modal right this is called the modal View and we can actually transform what this looks like and hold tables in here as well so I'm going to edit a layout notice that this is my all task column and it automatically makes it a table for me that's what you want I like hiding these as well moving these here to make it a bit prettier um baboon right now I can just come I can even forget about my task table and I can just simply come and say hey build a bike what are my tasks oh get a bike chain here's a new one for build a bike and my task is to get some wheels so notice how now I can house all the appropriate tasks in here it's always filtered correctly notice that those are always updating in real time and I can see them there so we're going to set up the similar structure for DB subtasks but instead of uh subtasks being connected to a project a subtask is going to be connected to a task so let's call this um let's delete this and make a new one called all subtasks we're basically just mimicking that structure above in the project and we're going to say equals DB subtask dot filter hey go look in my DB subtasks and find where the connected task is equal to this row boom all right none so far right but get some Wheels notice how now it's going to start showing up I need to figure out the style of Wheels I actually want great okay so we're actually getting close to done we're almost building a project management app in just um 10 15 minutes let's keep adding on a couple more things that are really going to take this to the next level for you then so now I have these I have all subtasks I can also see what project this is so if I call this project um I can actually instead of filtering for that I can just pull it from the task so these little bubble shows two breaking on me Coda come on what's up all right so this little bubble that you see right here is actually showing hey I've got more information inside me notice I hover over this lookup chip it shows me all the values from the actual row build a bike done and it's showing me its subtask so what I want is I want the actual project to pull that out so all I'm going to do is say equals connected task how I draw out that information is with a period it's called chaining I'm going to chain that information out period dot project so notice now I can simply say hey I need to buy soap that's wash the car one I need to get a bike chain that's build a bike so that is always and dynamically connected to here we'll probably want to do a done one as well check box we'll call this done boom and you can add due dates to yours you can add ever kind of other columns you need and you want that helps you in your project management app but let's just get that in there real fast let's do another date column due date all right so I'm almost there with my structure but there's a couple other things we want to really make this shine really make it work well for you right now this is tedious I hate this going here and adding a task and saying I need to take over the world I need to get super powers right for hours power supers whatever uh take over the world right that's too manual we don't want to do that so what we're going to do here is on our projects we're actually going to create a button that does that for us and it's going to be called add task what that's going to do is we need to Now set those options and what we want to do with this is we want this button to add a row two dbtasks select column uh dbtasks uh project right so we're saying hey when you add a row to this table I want you to preset a value and I want you to preset the value of project equals to notice that I can set static information here um hello right I can just like rewrite that but I don't want that I want Dynamic information and I'm going to say this row okay why am I saying this row again remember lookup columns the the type of data that is any look column is a row this is a row that is in here and it holds all the rows information so that's why I can say hey set project to this row you do not want to do this row dot project right because you're setting the value of a lookup column you don't want to put text into a lookup column you want to put a row into a lookup column boom we'll now say this we'll say add task we'll pick a pretty little color and a button for it boom now we got add task all right so now we can go to wash the car boom and notice how it instantly adds one here called wash the car why is this useful we'll get into that in a second mostly because you're not going to always hold this on the exact same page this looks horrible no one wants to manage their projects on a page that looks like this right so let's get into why this button is helpful number one we can have this button open the row itself for editing so if I want to wash the car I come in and I can instantly have this opened up and I say I need to get a bucket right boom there we go I can also what I can do is I can duplicate this and have one called I'm going to call this inner add and then I'm going to change it so that it doesn't open I'm actually going to hide this I'm going to open this add this edit layout add the inner I'm going to then shove it up here above we're going to do a couple things to make this just kind of look and feel a bit more like an app for yourself button options what we're going to do is we're going to hide the label and we're going to center it boom so now I can come here and sometimes you don't want this new row button and in some certain cases this actually doesn't even work so these add task buttons are really helpful because you can simply press that button and notice it will add it right there for you so I can just keep adding tasks to my wash the car so now I have two buttons because this one doesn't open the view it simply adds it and you can add it right away whereas this button called add task opens it up build a bike so you can start adding and editing that tasks and information right away all right so you would do the same for this right we would want to create a button called add subtask boom we're gonna call it column type button we want it to add a row to DB subtasks set columns value subtask connect task equals to this row again we're setting the value of a lookup column look up columns hold row values that's what we're going to set and we're going to call that instead of Click me we're going to say I'm just going to call it subtask and then I'm going to add a little plus button next to it so we can see great so now when I come in here I can go watch the car I'm going to now edit what this looks like so let's throw this over here a little bit um done I like to freeze that just to make it look a little cooler like separates it visually wash the car we don't need this here we already know this is wash the car so let's hide that and then let's go here columns and we're going to say add a subtask right so now what I can do here is when I'm in here I can go and I can view this buy soap subtask done we're going to edit that right just make it look a bit better um let's hide these two things done at subtask we can add due dates whatever else you'd want here but essentially oh no what we need buy soap let's show the subtasks what are we thinking we need to make this none centered all subtasks back all subtests that is a table beautiful that's what we want right so now I know go buy soap I can add subtasks here obviously want to hide that we can remember what project it's a part of hide that move that right so these are subtasks for buy soap so I need to go to Target I need to fill my car with gas I need to find my credit card great I can go back now so now I to watch the car I have to buy soap I've got all these different subtasks we can even hold different information in that button to tell us how many it has right so I could actually take this label and say equal to format this is saying give me some Dynamic information I'm going to say tub tasks one in this one we we say what we want to put in that value so notice I can put a 2 there as well this is just how format works I can say in the first spot AKA go find the one and put the value dog in it and in the second spot go and put the value 45. so notice how my result it puts the word dog wherever one is and it puts 45 wherever the 2 is I can even switch that around right if I put one one it'll put dog dog so instead of putting that what I'm going to put in the first space is actually all subtest.count boom so now I get some visual information that like hey buy soap has three different subtasks for it whereas this one has one subtask for it right so that just gets it a little bit more app-like again we're turning it from just kind of a boring table into something that feels and looks like an application for yourself uh you can go in again get anything else you want in here let's unhide due dates you can have that information for you as it comes up all right we're almost there we're gonna do a couple more things lastly we need to start organizing our documents so it starts making sense this is called DB projects I always hold these are the master tables always always always hold your master tables in a separate area so we're going to have a whole database folder if I just take these and drag them over to a new page it names the page the name of the table kind of just a quick trick and hack for you so now I'm going to call something called databases we'll just organize these together we'll file them all the way in here so this is your backend now this is your back end where you can go you can edit your tables you can change things you can fix bugs now you need to make your user interface where do people interact with these so let's just call this projects and now we're going to make a view um yeah I don't like that so let's do this I'm going to say I want another table but instead of a new blank one I want a connected projects one we'll call this projects visually I always hide this title projects projects it's just redundant you don't need that so we're going to hide that a bit we're going to then hide this a bit we now have kind of a visual insight into all right believe it or not from here on out you're done you have the foundational databases and structure you need to create a rich and Powerful project management app everything else is just layering on Integrations visuals and customizations to make it really work for you or your team um here's one that I built the other day if you want to just grab this template itself you can do so in the comments below but you'll notice here some different things right I've got different charts that show me by project where my project tasks are I can go and I can view a detail for each project this is all tasks for cleaning the house gives you these nice color bars to tell you where these tasks are at statuses the ability to kind of comment and add files and add more subtasks assign those subtasks to people right and so if everything here on out really was just what worked for me if you want to grab this template go ahead and do it but if not you can also go ahead and grab this easy template and build it yourself so good luck guys hope you enjoyed it adios