Project Commander Docs ← Back to site

Projects Tab — Feature Guide

Projects tab — full project portfolio table with health, slack, scope, utilization, team
Projects tab — full project portfolio table with health, slack, scope, utilization, team
Projects tab with every section open — the project table; the Team Allocation Matrix; the Critical Chain section with its explanation, its legend and a timeline row per team member showing chain blocks, idle-resource links and feeder paths; and the Cross-Project Dependencies section listing one dependency, AUTH → PAY, above the Upstream (blocks), Downstream (blocked by) and Description fields and the + Add button
Projects tab with every section open — the project table; the Team Allocation Matrix; the Critical Chain section with its explanation, its legend and a timeline row per team member showing chain blocks, idle-resource links and feeder paths; and the Cross-Project Dependencies section listing one dependency, AUTH → PAY, above the Upstream (blocks), Downstream (blocked by) and Description fields and the + Add button

What it's for

The Projects tab is the programme view: every project the team is running side-by-side, plus the team allocation matrix that splits people across them, the cross-project dependency declarations that propagate slips between them, and the cross-project Critical Chain that finds the longest constrained path across the portfolio.

The tab is four folding sections, top to bottom: Projects (the portfolio table, open when the tab opens), Team Allocation Matrix, Critical Chain and Cross-Project Dependencies (all three closed when the tab opens; click a heading to open it).

Four things live in one tab: register a new project, edit per-project settings, see a read-only portfolio dashboard with per-project health, and declare and watch cross-project blocking dependencies. The portfolio table is a monitoring view — it reports each project's forecast, slack, utilization, and alerts and does not edit them inline. To model "what if" changes across the portfolio (adding people, scope growth, a slowdown), use the What-If tab's All Projects view, where sliders and a Monte Carlo simulation update the whole-program forecast and odds.

The audience is programme managers, portfolio leads, and engineering directors. A single project's view is on the Dashboard; this is where multiple projects meet.

In the web app at projectcommander.app/app, demo mode runs this tab on sample data (a project added there cannot load real work, and everything resets on reload), while Connect Your Own Jira registers real projects read-only. Connected with an API token, the list of registered projects is kept on your Jira account, so it follows you to another browser; connected through Atlassian's sign-in, it is kept in that browser only. The app installed in your Jira site from the Atlassian Marketplace keeps it in the app's own storage on your site, against your Atlassian account.

Programme model

A programme is a set of related projects plus a shared team and the allocations between them. Each programme contains:

Toolbar / header

The tab's table sits inside a folding section headed Projects, carrying the count (9 projects, or 7 of 9 projects active when some are unticked). Its controls run along one row:

Add Project form

Add Project form expanded — Project Key, Board ID, JQL Filter (required), plus Name, Target Date, Estimation Mode, Story Points Field, Sprint Capacity, Sprint Length, Velocity Lookback, Sprint Mode toggle, and Add Project / Cancel buttons
Add Project form expanded — Project Key, Board ID, JQL Filter (required), plus Name, Target Date, Estimation Mode, Story Points Field, Sprint Capacity, Sprint Length, Velocity Lookback, Sprint Mode toggle, and Add Project / Cancel buttons

The form is key-first: type the Project Key and leave the field, and the app checks the key against your Jira site and fills in what follows from it — the project's real name, the standard "everything in this project" JQL filter, and the project's board. A key Jira doesn't recognize is flagged immediately next to the field. When the project has exactly one board it is selected silently (a note names it); with several boards the Board ID field becomes a short named picker; with none (or when the lookup is unavailable) the field stays manual. Auto-fill never overwrites anything already typed.

The form is headed Add Project (or Edit Project) and has two groups, Required and Other Settings, followed by the Sprint Mode checkbox and the Cancel and Add Project (or Save Changes) buttons.

Required fields:

Other settings, in the order the form shows them:

Before Add Project saves anything it checks with Jira: a Board ID that is not a number, a board Jira cannot find, or a JQL filter Jira rejects each stops the save with a red message saying which, and the button reads Checking filter… while it asks. Registering the same key with the same JQL filter twice is refused; the same key with a different filter is allowed, so one Jira project can be registered as several slices. When the checks pass, the project is saved and its data is read from Jira.

Edit / Delete

Edit Project form — the same fields as Add, pre-filled with the project's saved settings, including the Story Points Field picker, with Save Changes / Cancel buttons
Edit Project form — the same fields as Add, pre-filled with the project's saved settings, including the Story Points Field picker, with Save Changes / Cancel buttons

Each project row has Edit and Delete buttons. Edit opens the same form as Add, pre-filled with the project's saved settings; the user can change any of them, and only the project key is required — so settings can be edited even when board ID or JQL are missing. The project's record is the one home of every setting it has (since 2026-09-04): a value changed here is the value the Dashboard, Scope, What-If and Sprints tabs read, and a value changed through one of their card gears or capacity controls shows here on the next Edit. This is also where an existing project's Story Points Field is corrected: the wrong-field notice on the Dashboard and Alerts tab points here, and after saving a different field the project's data refetches and every screen re-reads points from the newly chosen field. Editing never changes the stored field on its own — the automatic pre-selection from detection applies only when adding a new project. Delete opens a dialog headed Delete project? that names the project and its JQL filter and says it cannot be undone, with Cancel and a red Delete button; on Delete, the project is removed together with its allocations, its cross-project dependencies, and its board's saved team. People who belong to no other project go with it (2026-09-02): anyone whose every share was of this project, or who has no share of any project, is removed from the team, and the dialog names them before you confirm; a person with a share of another project stays. When the deleted project was the one being shown and one project remains, every tab switches to the remaining project at once — its board, filter and people — with no reload. Choosing a project in the selector at the top right does the same (2026-09-03): the app's stored board, filter and capacity settings become that project's, so the Dashboard, Sprints, Team & Capacity and the rest all read its board; Program view leaves the stored board where it was. On a reload the selector starts on the project whose board is stored.

Active checkbox — include or exclude a project app-wide

The leftmost column of the portfolio table is Active: a checkbox per project, ticked by default (including every project registered before the checkbox existed). It decides whether the project is included anywhere in the app.

Portfolio dashboard table

One row per registered project — active ones with live stats, inactive ones greyed with dashes (see the Active checkbox section above). Columns:

The portfolio table is a read-only monitoring view: every cell reports a value, and the only interactive controls on each row are the Edit and Delete buttons.

Sorting

Every data column heading is clickable. The first click sorts by that column with the worst news first — most negative Slack first, Critical health first, highest Utilization first, lowest Progress first, most Alerts first, and the highest share of unestimated issues first under Estimation. The second click reverses it. The third returns the table to registration order. A small arrow on the heading shows which column is sorted and which way it is running.

Columns with no "worst" end simply read in their natural order on the first click: Project alphabetically, Forecast and Target by date, Scope, Velocity and Team from lowest to highest. The two control columns — the Active tick and the Edit / Delete buttons — are not sortable, because ordering by them would fight the rule below that inactive rows sit at the bottom.

Rows whose cell in the sorted column is a dash sort after every row that has a value, whichever way the column is running.

Filtering by health

Three buttons above the table — All, At Risk & Critical, Critical only — narrow it to projects whose Health pill matches. The default is All. When a filter leaves nothing to show, the table body reads No projects match this filter and the buttons stay on screen to click back to All.

What sorting and filtering never do

Programme rollup row

When at least two ACTIVE projects exist, a footer row sums the active portfolio (inactive projects are excluded from every rollup figure):

Team Allocation Matrix

Below the project table, a folding section headed Team Allocation Matrix with the member count, for example (4 members); it is closed when the tab opens. Inside is a members × projects grid, with a Member column first. A couple of internal demo-only projects are hidden from this grid. With projects but no team members registered, it reads Register team members to see capacity allocation across projects. Each member can be split across multiple projects (e.g., 60% Auth, 40% Pay).

Team Allocation Matrix expanded under the portfolio table — per-member rows with one column per project, each cell stacking a read-only percent above its
Team Allocation Matrix expanded under the portfolio table — per-member rows with one column per project, each cell stacking a read-only percent above its "= X" line labelled per period (pts/sprint or hrs/wk), and a Status column showing per-unit Σ percents that turn red when totals exceed 100%

Cell contents (read-only here)

Each cell shows two stacked values, read-only on this tab:

To change an allocation, click a person's cell in the Alloc column of the roster table on the Team & Capacity tab (the column appears once at least one project on the Projects tab is ticked Active) to open the allocation popover, where editing either the percent or the "= X" value updates the other and saves immediately to the same program store. Storage is percent, kept in both units, so toggling a project's estimation mode never loses data.

Over-allocation

The matrix does not clamp totals. Over-allocation is preserved verbatim and surfaced through the Status column's red text, so the cost of putting Sarah on five projects is visible rather than silently capped. Forecasts respect the actual loaded allocation, so the consequences of over-allocation show up in the per-project Utilization and Forecast columns.

Capacity-change live update

Changing a member's hours per week or points per sprint (in the Team & Capacity tab) immediately updates every "= X" display in this matrix and the Alloc popover, without re-entering any percents. A 60% allocation stays 60% across capacity changes — that's the intent the planner expressed, not the absolute number.

Feeds the program Delivery Forecast

The per-project allocation set here is also applied when the Delivery Forecast rolls a program up — the Program View on the Dashboard and Scope, and the All Projects sub-view on What-If. Each project is forecast on its team's allocated capacity, so a person split across projects counts at their share on each project rather than at full capacity on every one (which would make the program look faster than it is). Set the real split here for a true program forecast; a person left at 100% on more than one project is still counted in full on each.

Critical Chain panel

A collapsible Critical Chain section sits below the Team Allocation Matrix and shows the longest, most-constrained path of work that determines the programme end date. It is the same engine documented in ALGORITHMS section 7 (Critical Chain) — chain confidence, per-resource summaries, feeding paths, due-date risks, epic grouping, and team-pool overflow. When Program view is chosen in the project selector at the top right, the chain is computed across every active project; otherwise it is filtered to the selected project.

Opened, the section explains in a few short paragraphs what the chain is and the five things each open issue is scheduled by — its remaining estimate at the pace of whoever holds it, its blocks links, that person working on one thing at a time, the days that person is not at work, and its issue or sprint start — then draws the chain diagram. Work held by someone with no capacity typed on the Team & Capacity tab cannot be scheduled, and an amber note above the explanation names it: Not on the chain: <person> has N tasks (<keys>) and no capacity typed on the Team & Capacity tab. With no open sprint holding work it reads No sprint data (Load a Jira board to see the critical chain); when every task fits it reads No bottleneck detected (All work fits within team capacity. No single resource is driving the delivery date.); and if the chain cannot be worked out it reads Couldn't compute the critical chain. The section no longer has an AI question box: it was taken out on 6 October 2026, with every other place the app asked an AI model.

Cross-Project Dependencies

The last folding section on the tab, headed Cross-Project Dependencies with a count such as 2 deps. It holds a list and an Add form. With nothing declared it reads No cross-project dependencies declared. Add dependencies to model blocking relationships between projects — when an upstream project slips, downstream projects are automatically flagged.

Dependency violations

When at least one declared dependency has the upstream forecast past the downstream target, a red box headed Dependency Violations lists each one: PROJ_A is blocked by PROJ_B — upstream finishes N days after PROJ_A's target.

Declared dependencies

A list of every upstream → downstream statement with optional description and a Remove button.

Add dependency form

Three controls:

Plus a + Add button.

Cascade rules

When a dependency violation fires:

Removing a dependency clears the violation flag in the next analysis pass.

Empty / loading / error states

Cross-cutting modes

How the numbers are computed

Effects on other parts of the app

© 2026 Project Commander · projectcommander.app · Support · Privacy · Security · Terms