 Hey devs, in this video, we're going to walk through how to use a GitHub project board when breaking down your software project tasks. You'll learn how to create a new GitHub project board, how to create and organize notes and GitHub issues, how to set up multiple boards for different views into your project's status, and maybe even sprinkle in some board automations along the way. At the end of this video, if you want to learn more about project boards for GitHub project management, you can check out another of my tutorials that focuses in more on the automation side of things. So, now that we're all on the same page, just what are GitHub project boards? Well, according to GitHub itself, project boards help you organize and prioritize your work. You can create project boards for specific feature work, comprehensive roadmaps, release checklists, etc. Put more simply, project boards are a way to help us organize our projects. You can think of them very similarly to how you might think of using something like Trello, or even more basically maybe something like a checklist app. They're basically a way to just help us to organize what needs to be done, to maybe brainstorm ideas, to keep track of the work that needs doing. Now, we can have project boards set up at a couple different levels of abstraction. So, we can actually have project boards for an organization within GitHub. So, here I have opened up an organization that I'm a part of, and when I am at that top level organization page, I can come over to the project tab here. I can click into that, and I see that I have this one project here. And now similarly, you can have project boards at the repo level, and that's where we're going to be focusing in on most of this video. So, here I'm at the top level of a repo that I am a part of, and you'll see in the Projects tab here, if I click on that, I have this one repo available. The project board here is called R&D, and we can see this progress here that says I have three done issues, one in progress issue, and zero to do. If you open this up, we can see an example of what an in progress or a real board might look like. I have four columns set up here, backlog, to do, in progress, and done. And then we have different sets of issues organized into these columns to indicate their status. And we'll see here in the done column, one of these issues even has a linked pull request to it. So these boards help us keep track of what's going on in our GitHub repos and are a good way for us to better understand the current state of our project. Now, I am at the beginning of a new project, and I thought I would share with you how you might think about breaking down your project into smaller tasks by working through my own project and showing how I might use GitHub project boards to keep track of this work. So here I am at the repo that I'm going to be working in here. It's an n8ebol slash URL shortener. And if I go to my issues tab here, we currently see that I have no issues. And if I go to the projects tab, again, I have no projects here. And at this projects tab here, it sort of gives you a quick overview of the kind of stuff you can do with projects. You know, we can sort our tasks, plan the project, we have automations available to us and a number of other actions here. So I'm going to get started by go ahead and clicking on create a project. And for this project, I'm going to use this to start to just sort of track my ideas or keep track of the general outline of what I want this project to look like. So I'm going to title this board ideas. And now we can add a description here. So I'm just going to list something along the lines of project outline here. Now in the project template section here, if we click this dropdown, we see that there's a number of different templates to choose from. I cover these in more detail in my other GitHub project management video. But basically these just represent the different types of pre-built automations that you can set up as issues progress through their life cycle within GitHub. Now for this case, I want to keep this simple and focus more on the breaking down of tasks. So I'm going to select the none template here so that there will be no automations in place when this project is created. Once I've selected my template, I'll go ahead and click create project. So now I have created this new ideas project board, but it doesn't really look very useful right now because it's not created with any columns by default. So the first thing we're going to want to do here is to click this add a column button. So now we can start thinking about how we want to break our project down. Now for small projects, I often like to think of my project in three phases roughly. So usually these phases are grouped into something along the lines of the setup phase, the implementation phase, and then the deployment phase. If this is something more along the lines of a blog post or an article, I might create three phases that are more similar to like the prep phase, the creation phase and the sharing phase. So think about what conceptual phases you want to break down and we're going to map these columns to each of those phases. So for me, I'm going to call this first column setup. And then again, it's going to ask about automations and we're going to continue our trend here and select none for automation to start and then create click create column. So here now I have my first column setup. And if I look here, there's not anything in that column. And there's two places here that sort of signal to us that we might be able to add something to that. The first is in the column itself, we have this plus button. And if we click that, it'll prompt us to add a note. The second place is we can add cards over here in the right hand side. And if I click add cards, it's going to pull up this filter menu and it would allow me to filter and select any issues I have. But as we saw previously, we don't have any issues. So let's fix that. Let's create some notes and let's create some issues for how we might think about breaking down this project. So the first thing you might want to do is just start getting ideas down on paper, theoretically speaking. So in this case, getting some ideas down into a note might be helpful. So I'm going to click the plus button here and I'm going to create this new note and you can expand this note if you want. And in this note, we can write GitHub flavored markdown and start jotting out the ideas for this project. So I'm going to create a header here by using a single hashtag. And I'm going to say Kotlin URL shortener because that's kind of the idea of this project that I want to build. And then the first section here I might have is going to be called setup. And then we're going to call this implementation. And then the last one is deployment. So here I'm kind of in this note outlining what I want the structure of this board to actually look like. But this could be a place where you are jotting down individual topic ideas as well. So that might look something like this, you know, the first thing we might want to do is create project. Then update project dependencies. Now for implementation phase, the first step of this project could be to create home route. And now the next phase might be to implement the the redirection that we might need for this URL shortening service. So this might be labeled something like create redirection route. And finally, we'll just add a deployment phase here that says deploy to, you know, Google app engine. So this is just a quick overview of how you might start to break this down into some individual topics and some individual sections. And now as soon as I hit add, that's going to create this note here in my setup phase. Now I'm going to translate this note into the rest of the board. And this is where this board will really start to come alive and feel a little bit more useful to us as we're working through our projects. So in our note, we have our first section here is set up. The second section was called implementation. So I'm going to select the add column button and I'm going to call this new column implementation. And again, we'll select none for presets and click create column. And then I'll add the third column and call this deployment. So now I have a column set up here to help group each individual task that I'll need to complete for the different phases of my project. And this is helpful because as you are breaking down any larger task, it's really helpful to zero in on smaller pieces. So if you're building an app, for example, and you need to build an authentication for your application, you might have an authentication column. And you might start breaking that down into individual tasks, such as, you know, create an authentication page, implement, you know, log in functionality, implement a sign up functionality. So you can start to break those down individual ideas and group them by the larger theme for the application. So now that we have a note, we want to start adding some issues here. So one way that we can add issues is by creating a note and then converting the note to an issue. So I'm going to create a note here that is labeled create project. And I'm going to click add. And can we see that that added a basic note here and I can drag that note around like anything else on this board. And if I click the little three dots, the overflow there, I can select the convert to issue option. And that's going to pull up this dialogue that's going to prompt me to convert my note to a GitHub issue. So the title of that is going to be populated automatically. And now I can fill in my body. So I'm going to label this something along the lines of create a new IntelliJ project with Ktor support. So now I will click convert to issue. And we see here that the UI has suddenly changed. We now have an issue number and we see open by an eight evil. If I open this up into a new tab, I see that this is now a fully fledged issue within GitHub. Now another way that we can add issues to our board is by creating them as we would normally and then adding them within the board itself. So let's create a new issue. And this one will be for that second item in our outline note. So this one will be update project dependencies. And then I'll select create new issue. And so here we have the newest issue in our project. So now if we come back to our board here and go up to the add cards option again, we see that we have no issues, which is not what we expect. However, if I refresh the page here and I go to add guards, now our issue shows up. So now any issues that we have over in this right hand side of the screen, we can drag over to wherever we want in the project. So update project dependencies for me was in this setup section. So I'll drag it over and now I have my setup section completed. So I'm going to go ahead and quickly stub out the other two sections here. So I'll create a note in the implementation section for create home route. I'll create another note for create redirection route. And now in the deployment section, I will create one note for deploy to Google app engine and hit add. Now I'll go ahead and convert all of these two issues. So again, I'll hit the overflow, click convert to issue, let the defaults apply and hit create. And then I'll repeat the process for these other notes. And there now we have five different issues set up here and all grouped by the different phase of their project. And if I now return back to my issues tab, I can see again all the issues that I was created in the project section have now been translated here over into the issues. Section. So if I return to my projects board here, we see, you know, we have our one board for ideas and we can open this up. And this is great and come in and I can start filling out ideas here. Maybe I need to add another route. And so I want to add a URL management route to support deletion. You know, I can add the note. I can convert to an issue. And there we have it. However, this view of all these issues doesn't really tell me about the status of any of these issues. There's no sort of to do or in progress column. There's no automation moving things around. So while this is useful for high level planning for high level understanding of what's going to be built. It doesn't help me understand where the project is today. And that's one of the nice things about GitHub projects is that you can set up multiple projects to give you different views into your current project and the current state of your project. So we're going to come back here and we're going to create a new project. Now we're going to create a project that's going to be exclusive to that setup phase of our project. And it's going to help us to understand the phase of just those issues. And now you could organize this in a lot of different ways. You could create maybe one other project that was the status of all your issues or you could group them in what other configuration you like. But for me, I'm going to try and create some boards that match to those initial project phases. So I'm going to call this setup. And then for the description here, I'll just say status of issues from setup phase of project. And now this time, again, we might select different templates. So again, we're going to expand this and we can just review. So we could select a basic Kanban style board. If you're not familiar with Kanban, you can think of this as the sort of column based approach that we were just looking at. Very similar again, like to Trello or maybe something you have set up in Jira where you move things across the screen from left to right as their status updates. So when you start working on something, it might go from, you know, to do to in progress. And when it's finished, it might move into a column called done or completed. So for us, we're going to actually select that basic Kanban style because this is all we want for now. We don't want to get too far into the automation. So I'm going to select basic Kanban and then go ahead and create this project. So now that we've created the project, it has automatically created for us three columns to do in progress and done. So these can then match up to the different phases that an individual issue might go through throughout our project. And now this is kind of the basic setup from sort of that default Kanban style. If you had selected one of the automated styles, particularly the automation with reviews, this might actually have several additional columns. And you could customize this to whatever you want. If you need to have eight columns, you could if you want only two columns, maybe you want just in progress and done. You can set that up however you want. There's a lot of flexibility here. But now that we have these columns, we need to actually start populating this. So again, I might go back to the issues that we had in our original column in the ideas board, which were create project and update project dependencies. So I'm going to grab the create project and I'm going to move that over into the to do column. And then I'm going to grab the update project dependencies item. So now I can see that in the setup phase of the project, those two issues are still in the to do phase. Now, if I started working on the create project, for example, I could drag that over into the in progress column. And when I completed it, I could move it over into the done column, for example. And similarly, we could move, you know, the update project dependencies, and we can move it backwards if we needed to because we know that these things are always not linear. Oftentimes we're moving back and forth between different phases as our project develops. So let's go back to projects one more time and replicate this quickly again. We'll go to new project. And this time we'll create a project for the implementation phase status of implementation. Issues. And I'm going to select basic can ban. Once again, I'll create the project. And this time I'm going to grab the create home route, drag it over into the to do. And I'm going to drag the create redirection route. And again, drag it over into the to do section. And for the last one, I'll create a deployment phase project. Select basic plan ban. I'll create the project. And I will move my deploy Google app engine issue over to the to do column. Now you may have noticed that this time that only a single column is present. This is sort of a, an oddity of GitHub where sometimes once you've created it, it will only show the to do column. Just try refreshing your browser and it should show up all the columns that it created. This can be, can be kind of tricky in the past. I've accidentally added additional columns when I didn't mean to. So hit refresh before you worry too much that something's not there. So now we have four projects here. And they give us different views into our work. So again, we can look at this ideas project and see the high level overview of what's going on. And then you can use this to, to focus your work and break down tasks into smaller pieces of work. And then if you want to start looking in at individual statuses of issues, you can click into the specific boards here. And so if I want to see where the create home route is, I can come here. And then if I need to update it, I could move it over to in progress, for example. Now before we finish out, let's just take a look at how we can start to add some automation to this. Like I said before, my other video on automation with these GitHub project boards will go deeper into this, but I just want to show you how and where you can get started. So let's go into our setup phase board because that's kind of this phase of this project that I am currently in. Now if we want to examine what automations are in place for any individual board, you can go to the board, click the little three dots and select the manage automations option. And this will show you what automations are enabled for that particular column. And you can see here that this column has the to do preset selected. So you could change that preset if you wanted. For example, if I select none, we'll see that there is no automations selected. If I go to in progress, it'll present me a different set of options to choose from. And similarly done is yet a different set. So I'm going to go back to the to do preset here. And now we have these options here. So we could add things to do automatically when an issue is created in the project. Now we probably don't want that in this because we have, you know, different boards set up for different types of work for different phases of it. So we're going to leave that one on selected. And similarly, you could automatically add issues to this column if they have been closed and reopened. Now you could also move pull requests into columns very similarly. So when a new pull request is open, you could automatically add it somewhere. And if it's reopened, you could add it somewhere. However, again, because we're sort of doing this a little bit more manually, we're going to leave those off for now for this to do column. Now what about in progress? Well, very similarly, we could go to manage automation. And again, we see the in progress template is selected. And now we have issues more specific to in progress. So we could move an issue here when it's reopened and we could move pull requests into an in progress column when the pull request is newly added. If it's been approved by a reviewer or if it's, you know, pending approval by a reviewer. So by selecting any of these things, we can start automatically creating issues and tickets and getting them to move along these life cycles. So I'm just going to try one of these out, for example, to demonstrate to you what this might look like. So I'm going to go ahead and select the newly added under the pull request section. So when a new pull request is added, it's going to show up in this in progress column here. So I'll select update automation and that should update that for this column. So now I'm going to go back to the root level of my repo here. I'm going to open up my read me. I'm going to just make a sample edit to the read me here. So I'm just going to type sample change. Then I'm going to scroll down and I'm going to automatically create a pull request on a new branch here. So I'll click propose changes and then I will select create pull request. So now that has created a pull request. Let's go see what this has done to our project. So go back to the projects tab here. Go to the setup tab here and we can see that nothing is here. It hasn't automatically added our pull request to this column. And that's because it needs to be related to an issue of this project board. So in this case, let's connect this to issue number seven here. We'll link that pull request to issue seven so that it hopefully then shows up in our in progress column for us. So we'll go back to pull requests or open up our pull request here. We're going to edit our comment and we're going to type fixes number seven. So once we hit update here, this should associate this pull request with our issue number seven. And we can see over here in the UI that sure enough it now shows up in the linked issues section. So this time if we go back to projects, go back to setup. And yet again, we don't actually see our pull request here as you might expect. So what's going on here? Well, if we look a little bit closer, we'll see that we do see some indication of the pull request now in this project. Here in the to do column under our issue number seven, we see that it says one linked pull request. And if we expand the dropdown, we see that it is now referencing that pull request, but it's connected to the issue. Is there anything we can do about this? Can we make the pull request show up in this board as its own individual thing to track so that we can understand where the issue is and where the associated pull request is independently of one another? Well, once again, let's go back to our pull request section. We'll open up that pull request. And this time in the right hand side, we can assign the pull request to a project. So if I click on that section, I can scroll down here and assign this pull request to the setup project board. So you see now as soon as I did that, it now says in progress. So it automatically move that pull request over into that in progress section. And if we wanted, we could actually move this to different columns within that board right from within the pull request view here. Now let's go back to our project real quick. Let's go to setup. And now we'll see that we have an item here for that pull request. And if we click on that, it'll actually open up a little preview of that pull request in the right hand side of our project board here. Now let's take a look at the last piece of this flow and look at our done column. So if we go to the manage automation section for done, we can see that we can automatically move pull requests here when they are merged. So we're going to check that on. We can also automatically move pull requests here when they are closed with unmerged commits. So we're going to select that one as well. And we're going to click update automation. So I'm going to go back to my pull request, open it up. And because this is just kind of a sample pull request, I'm just going to go ahead and close it because I don't need that sample change to the read me. Now we see that in the projects section, it says done. So it automatically moved from in progress to done. And just to double check if we go back to our setup section, we'll see once again that that pull request is now marked as done. And it's even highlighted in red here to indicate that pull request was closed. So this has now let us track the state of the update project dependencies pull request as it moved from to do in progress and done. So again here, this exercise has been to show how we can start to use GitHub project boards to have different views into our data as we're working through something. So I started here with my ideas board and you could use this to start brainstorming your project ideas like I did with this note. So I treated this note here as a basic outline and for the full project, this outline would be much larger. But once you have this outline, you could start breaking this down into the individual tasks and individual groupings that you want. So for me, I had a setup and implementation and deployment phases because those are kind of the three distinct parts of this project and tutorial series that I want to create. However, you might have phases based on features, for example. So you might have maybe a setup phase, an authentication phase, a add user to the database phase, and these could all correspond to different columns within this project board. But because this type of view is not that helpful for understanding the status of any individual issue, GitHub allows us to create multiple project boards and track issues across those in different and unique ways. So here I set up a individual board for this setup phase of my project and was able to set up some automations specific to this board so that I can track issues and pull requests throughout their life cycle. And you can do this individually for each individual project. So in my implementation board right now, I don't have any automation setup and maybe that's not important. Or maybe I want to customize this to a more specific workflow, more relevant to the day-to-day work of the project as opposed to the setup or the deployment phases. So in closing, I hope this has been a helpful look at how you can take advantage of GitHub project boards to not just track an individual issue or to track a pull request, but you might be able to actually use it even for for ideation or for breaking down of your tasks. So next time you're working in a project and you're not sure where to start, maybe try creating columns for different areas of functionality and then start adding individual notes or individual issues within those columns for the different parts that you think you might need. As you start pulling these things apart and creating individual tickets, you're going to be left with a very clear plan and roadmap for your project. And because they're all going to be in notes, which can be easily converted to GitHub issues or they'll just be in GitHub issues. It means you can easily integrate these with your pull requests. You can reference these from commit messages and it gives you a nice tight integration between your idea, your outlining and your brainstorming and then with GitHub and your actual project management and the individual code that you'll be writing. So this could be a really helpful way to take on a new project and to get some clarity around how you're going to build it. If you're feeling stuck the next time you're setting out to build something, maybe give this a try. And as I mentioned before, if you want to learn more about setting up automations in these GitHub project boards, check out my previous video as we work through several different examples of automating workflows of your GitHub issues. Thank you so much for watching Devs. Until next time.