In the repository, go to Projects and click the green + New project button.
Here, select Team planning, the first option.
And then I enable Bulk import items, which ensures that issues created in the repository’s Issues tab are automatically added to the project board.
After creating the project board, I find it useful to immediately set up all columns and adjust their descriptions.
Epic: A larger feature made up of several related user stories.Backlog: User stories, tasks, and bugs that are planned but not yet selected for a sprint.Todo: Items selected for the current sprint and ready to be worked on.In progress: Work that is currently being actively developed.Review: Completed work awaiting review, testing, or approval.Done: Work that meets the Definition of Done.In each issue, you can find several fields on the right-hand side. These fields are also reflected in the project board.
Priority: Used to apply the MoSCoW method (Must, Should, Could, Won’t) to indicate the importance of an issue.Size: Indicates how complex you think the work is, estimated using Planning Poker with a Fibonacci scale.Estimate: The expected time needed to complete the issue (I use hours). The total of all estimates is visible per column.Iteration: Used to assign issues to sprints. Filtering by iteration shows all work completed within a specific sprint. start date and target date: Used to set deadlines. Especially useful when reviewing or planning work in the roadmap.In the top-right corner, click the three dots and then Settings.
status: These represent the columns we created earlier on the project board.sub-issues progress: I find this field distracting, so I disable it. I will show how to do this later. priority: Here I define my MoSCoW fields, based on sprints, each with a short description size: Here I create values based on the Fibonacci sequence, used for Planning Poker estimates. estimate: I only adjust the name by adding in hours to make the meaning clearer.itteration: Used for sprints. I prefer two-week sprints, so I leave this setting unchanged.start date and target date: I also leave these fields as they are.In the project board, you can see which fields are selected for that issues. I find the default layout unclear, so I customize it via View → Fields:
The fields I keep visible are:
The order of these fields determines how they appear in the issue view. (drag and drop to youyr preference)
How to create or modify labels:
open an issue → click the settings icon next to Labels → Then click Edit labels at the bottom
By default, a bug label already exists, so I do not change anything here.
I usually do not work with labels. With labels, you can add multiple values to a single issue, such as multiple MoSCoW priorities or multiple sizes.
In the fields that we adjusted earlier, only one option can be selected by default. Selecting multiple options is not possible, and when you change the value, it is updated rather than added.
In my FDND agency project from semester 3, there was a field called Type.
This field was used to indicate what kind of issue it was, for example an epic, feature, or task.
It is similar to labels, but only one option can be selected.
The Type field does not exist by default in GitHub Projects, you need to create it yourself.
In Project settings (the three dots in the top right corner of the project board → Settings),
you can create custom fields by clicking the + button.
I named the field Type,
set the field type to Single select,
and created the following options:
EPICUSER-STORYFEATURETASKBUGFEEDBACKDOCUMENTATION
I use uppercase names so they are easier to distinguish visually on the project board.To ensure that issues are written clearly and consistently, you can create issue templates that help guide users when creating an issue.
In your repository settings, under Issues:
GitHub provides default templates, but you can also create custom templates tailored to your project.
You can also create a .github/ISSUE_TEMPLATE folder in the root of your project and write all your issue templates there.
After that, you can push them to GitHub.
After creating the issue templates, GitHub automatically shows all available issue template options when you create a new issue. You can then select the appropriate template and fill in the required information.
When creating a branch, I prefer to start from the issue.
In the right hand column of the issue, you can find the option to create a branch, which is then automatically linked to that issue.
This also ensures a consistent branch naming convention by including the issue number and issue title
You can click Create branch and follow the steps in the popup to create a new branch.
By selecting Checkout locally, GitHub provides the terminal commands that you can copy and paste into the terminal of your project directory.
You can also use GitHub Desktop. Both options are convenient because the branch is created for you and you are automatically switched to that branch.
In the .github/ folder, you can also create pull request templates.
The file must be named PULL_REQUEST_TEMPLATE.md
Just like with issues, the contents of this template are automatically shown when a pull request is created.
When you click Insights in the top-right corner of the project board, you can access the charts view.
Some charts, such as the burn-up chart, are available by default, but you can also create custom charts.
What’s important when creating charts is that they use the fields we just created and customized, as these fields determine what data can be visualized.
I don’t have enough "data" in my project board to experiment with this. I’ll come back to it after a few sprints.
With workflows, you can configure what your project board does automatically:
By default, only open issues are added to the project board: is:issue is:open
By adding pull requests to the filter, PRs will also be added to the project board: is:issue,pr is:open
Issues and pull requests are now added to the project board, but by default they are placed in a New column with the status No status.
In the workflow Item added to project, you can change this behavior.
If you change the Set value field to Backlog, newly created issues and PRs will automatically be placed in the Backlog instead of ending up in a No status column on the project board.
I was stuck on this for quite a while.
I wanted pull requests to be automatically moved to the Review column, but all the examples I found online used either
GitHub Actions
or additional / duplicate workflows.
However, on the free GitHub plan there is a limited number of workflows available, so I couldn’t use those options.
I then took another look at the default workflows and noticed that I wasn’t really using Auto close issue.
That workflow automatically closes an issue when it is dragged to the Done column.
I don’t use this flow, I always close issues manually from the issue page instead of dragging them to Done.
So I thought: I’ve disabled a workflow, which means I should now be able to create a duplicate one. Unfortunately, that’s not how it works.
After that, I noticed the Pull request linked to issue workflow.
When you create a PR from an issue using Create a branch, this workflow allows you to move the issue to a different column when the PR is created.
In this workflow, I changed the Set value to Review.
Now, the issue is automatically moved to the Review column as soon as a PR is created, without using GitHub Actions.
Note: this only moves the issue, not the PR itself. The PR will still remain in the Backlog.
Which is not what I originally wanted, but good enough.
Also, the issue stays in its current column until you create a PR for the branch, which is ideal because it allows the issue to remain in In Progress while you’re still working on the branch.
If you didn’t create the PR from the issue, you can still link it afterward by adding the PR to the issue manually: