# GitHub Projects: project boards from issue to release

> GitHub project management for product people: board, table and roadmap layouts in GitHub Projects, the status field and custom fields, built-in workflows that move cards, and how to follow a feature from issue to pull request, merge, release and feature flag. Why "Done" on a board doesn't always mean customers can use it, and what to show the CEO.

- Course: [Git and GitHub for Product People](https://productovi.com/courses/git-for-product.md)
- Module: GitHub for product work
- Lesson 14/15, ~43 min
- Source: https://productovi.com/courses/git-for-product/project-boards

## A board for the launch

**Alex Tutor:** Tuesday afternoon of week three, and you and the rest of CatChow's product team are still on the loyalty launch. The milestone tells you how many loyalty items are closed. The CEO's question this morning was a different one: "Who is doing what this week, and are we on track?"

**Sofia:** And Daniel wants to drag cards instead of writing status messages. A spreadsheet next to GitHub would be out of date by Wednesday.

**Alex Tutor:** So keep the plan where the work is. **GitHub Projects** is GitHub's project management tool: a planning space on top of issues and pull requests. A project belongs to an organisation or a person, not to one repository.

**Daniel:** And every item in it is the real issue or pull request, not a copy. When #159 closed this morning, any project holding it knew at once.

**Alex Tutor:** A project can hold items from several repositories, plus **draft items**: quick notes that live only in the project until someone converts them into issues.

**Sofia:** So I create "Loyalty launch" in the catchow organisation and add the milestone's items. Nothing moves out of the repository.

> **Exercise:** A GitHub project belongs to one repository and can only show that repository's issues and pull requests.

**Alex Tutor:** Not everything on a board starts as an issue. Sofia has a half-formed idea from this morning's planning.

> **Exercise:** In the project, Sofia jots down a draft item: “Ask support for a loyalty FAQ”. What is true about it?

## Board, table and roadmap: one project, three layouts

**Alex Tutor:** A project has **views**, saved as tabs along the top. Each view uses one of three layouts, as of 2026: `Table`, `Board` or `Roadmap`.

**Alex Tutor:** `Table` is a spreadsheet: a row per item, fields as columns, sorting, grouping and editing right in the cell. It's the fastest way to sort out twenty new issues.

**Alex Tutor:** `Board` is a kanban board: cards in columns, one column per value of a field, usually `Status`. Moving a card to another column changes that field.

**Daniel:** That's where I'll live. I drag a card to `In progress` when I start, and to `In review` when my pull request is ready.

**Alex Tutor:** `Roadmap` puts items on a timeline by a date or iteration field, with markers such as a milestone's due date. It answers "when?", which makes it the view for the CEO.

**Sofia:** Same items, three ways of looking at them. Change a field in one view and every view shows it.

![The same coloured cards appear three times: as rows in a table, sorted into columns on a board, and laid along a timeline.](https://productovi.com/courses/git-for-product/inline/project-boards-illustration-2.webp)

*Change a card in one view, and every view shows it.*

> **Exercise:** Match each need with the part of GitHub Projects that serves it best.

## Status and custom fields: where columns come from

**Alex Tutor:** Columns come from fields. `Status` is built in, starting with `Todo`, `In Progress` and `Done`. Add a fourth option, `In review`, between the last two, and the board gets a fourth column.

**Alex Tutor:** Issues bring their own fields along: assignees, labels, milestone, linked pull requests, even sub-issue progress. On top of that, a project can have **custom fields** of its own.

**Sofia:** I'm adding three: `Priority` with P1 to P3, `Target date`, and `Iteration`, one-week slots from Monday to Friday.

**Daniel:** Iterations are handy. "What's in this week?" becomes a filter instead of a meeting.

**Alex Tutor:** Custom fields belong to the project: #163 can be P1 here and have no priority in another project. On the issue's own page they show up in the `Projects` part of the sidebar.

**Alex Tutor:** Before we look at the board, one check on where custom fields live.

> **Exercise:** Issue #163 has `Priority` P1 in the project “Loyalty launch”. If it's added to another project, it will have P1 there too.

```text
"Loyalty launch", Board view, Wednesday
- [Open] Switch on loyalty points for all customers #164: Todo · Sofia · target 10 November
- [Open] Launch loyalty points before Black Friday #147: In progress · Sofia · 1 of 4 sub-issues closed
- [Open] Spend points at checkout #163: In progress · Daniel · P1 · target 5 November
- [Draft] Write loyalty programme page #157: In progress · Emma · P2
- [Open] Show points balance in the account #162: In review · linked pull request #166 · Daniel · P1
- [Closed as completed] Points counted before promo discount #159: Done · closed by #165
```

*Each note starts with the Status column the card sits in.*

**Sofia:** Four columns of real work, and the parent sits in `In progress` with "1 of 4" on it.

**Alex Tutor:** Read a board from right to left: what's finished, what's waiting for a reviewer, what's being built, what hasn't started. The waiting column is where a PM can help most.

> **Exercise:** Daniel is off tomorrow. Looking at this board, which of his items is closest to done, and what is it waiting for?

## Built-in workflows: let GitHub move the cards

**Sofia:** Who keeps all this current? I don't want to spend Fridays chasing people to drag cards.

**Alex Tutor:** Partly GitHub. A project has built-in **workflows** under its `Workflows` menu, as of 2026. Two are on in a new project: when an item is closed, and when a pull request is merged, `Status` becomes `Done`.

**Daniel:** I've switched on two more. "Item added to project" sets `Todo`, and "Auto-add to project" pulls in every new catchow/website issue with the label `loyalty`.

**Alex Tutor:** So a new loyalty issue lands in `Todo` by itself. A merged pull request with `Fixes #162` closes #162, and the closed issue moves to `Done`. The middle columns people still move by hand, or with a GitHub Actions script.

![A small robotic arm lifts a card into the next column of a board as a parcel rolls through a gate beside it.](https://productovi.com/courses/git-for-product/inline/project-boards-illustration-3.webp)

**Sofia:** Unless someone writes `Part of #162` instead of `Fixes #162`.

**Daniel:** Then #162 stays open, its card sits in `In review`, and the board is wrong until someone notices. The closing keyword now matters twice.

> **Exercise:** At 9:15 Daniel squash-merges #166 into `main`. The project has its two default workflows on. What happens on the board?

## Done is not launched

**Alex Tutor:** Thursday afternoon the team publishes `v1.5.0`: #156, #160, #165 and #166 since `v1.4.1`. Two loyalty cards are in `Done`, the release notes list their pull requests, and customers still see nothing.

```text
Commit graph, oldest first: main from v1.4.1 to v1.5.0
1. commit e5f81a3 on main "Hide loyalty menu link when flag is off (#158)", tagged v1.4.1
2. commit b2e6f10 on main "Earn points on paid orders (#156)"
3. commit 6e0b4d8 on main "Add issue templates (#160)"
4. commit 7a1d9c3 on main "Count points after discounts (#165)"
5. commit c3f7a05 on main "Show points balance in the account (#166)", tagged v1.5.0 (highlighted)
```

*Every loyalty commit here is merged, deployed and released in v1.5.0, and still hidden: the flag loyalty-points is on for staff only.*

**Sofia:** So `Done` on our board means merged or closed. At CatChow that also means deployed within minutes. But hidden.

**Alex Tutor:** Right. Whether customers can use loyalty points lives somewhere the board can't see: the flag panel. Each question has its own source of truth.

![A board column full of finished cards stands next to a wall switch in the off position, wired to a dark shop sign.](https://productovi.com/courses/git-for-product/inline/project-boards-illustration-4.webp)

*The board shows the work; the flag shows what customers get.*

**Alex Tutor:** Some teams add a `Released` column and move cards into it on release day. We keep `Done` honest and make the launch a card of its own: #164, the flag switch, waits in `Todo` until 10 November.

**Daniel:** And when someone asks me "is it live?", please don't read me the board. Read `production` under `Deployments` and the flag.

**Sofia:** So: the board shows the work, the pull request shows the review, the release page shows the version, and the flag shows what customers get.

![The board shows the work, the pull request the review, the release page the version, and the flag panel with Deployments what customers get.](https://productovi.com/courses/git-for-product/diagrams/m5-l2-sources-of-truth.png)

> **Exercise:** Match each question about loyalty points with the place that answers it reliably.

**Alex Tutor:** Now decide how the board itself should show the launch. Two options are on the table.

> **Exercise:** Two ways to show the loyalty launch on the board. Which one keeps the board **honest**?

## From issue to customers

**Alex Tutor:** Now put the whole path of one piece in order. Take #163, spending points at checkout, which Daniel is building now.

**Daniel:** Its pull request will be #167. After review and the merge it goes into next Thursday's release, `v1.6.0`, still hidden.

**Sofia:** And on 10 November the flag goes on for everyone. That's the moment customers can spend points.

**Alex Tutor:** Order the steps, from the first issue to that moment.

> **Exercise:** Put the path of "Spend points at checkout" in order, from the issue to customers using it.

## "Halfway launched?"

**Sofia:** The CEO just opened the board and messaged me: "2 of 4 sub-issues Done, so we're halfway launched?"

**Alex Tutor:** A fair reading of a board that wasn't built for him. The useful answer separates three things: what's built, what customers see, and what's next.

**Daniel:** Mention the flag. He likes knowing there's a switch we control.

**Alex Tutor:** Two or three sentences, as a chat reply.

> **Exercise:** The CEO writes: "Board says 2 of 4 loyalty sub-issues are Done, so we're halfway launched?" The flag `loyalty-points` is on for staff only. Write a 2–3 sentence reply.

## The Friday update

**Alex Tutor:** Friday. Instead of answering questions one at a time, send one weekly update, and give the CEO a view of his own that he can open any day.

**Sofia:** What goes in the update? Everything on the board?

**Alex Tutor:** What changed this week, what's at risk, and what happens next, in the CEO's words, not the board's. Then decide which layout his view uses and what it leaves out.

**Daniel:** One risk from me: spending points touches checkout, so Oscar wants two full days to review #167. My target of 5 November is tight.

**Sofia:** So the launch date depends on #167 landing early enough for staff testing.

> **Exercise:** Write Friday's status update on loyalty points for the CEO, and describe the project view you set up for him.

**Alex Tutor:** That's a project board: the same issues and pull requests arranged for planning, moved partly by people and partly by workflows, with a view for each reader.

**Sofia:** And whatever the board says, it tracks the team's work. What customers get, I check in `Deployments` and the flag panel.

**Daniel:** Next week is my checkout piece. And by the way, the delivery page has had a typo for months. Support forwarded it again this morning.

**Alex Tutor:** Then next lesson that typo is yours: from the first click in the browser to the live site, and how to undo it if you need to.

- Previous lesson: [GitHub issues: bug reports, templates, labels and milestones](https://productovi.com/courses/git-for-product/issues-labels-milestones.md)
- Next lesson: [Your first change in the browser, and how to revert it](https://productovi.com/courses/git-for-product/first-change-in-the-browser.md)

---
Productovi Learning. Free, no sign-up needed to read.
