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 fully expanded — portfolio table, Critical Chain section showing the chain narrative, legend, and a Gantt-style chain chart per team member with chain blocks, idle resource, and feeder paths colour-coded across the timeline, plus the Cross-Project Dependencies section showing a violation card and the Add dependency form
Projects tab fully expanded — portfolio table, Critical Chain section showing the chain narrative, legend, and a Gantt-style chain chart per team member with chain blocks, idle resource, and feeder paths colour-coded across the timeline, plus the Cross-Project Dependencies section showing a violation card and the Add dependency form

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 scenario builder that lets the user model "what if" plans across the whole portfolio.

Five things live in one tab: register a new project, edit per-project settings inline, see a portfolio dashboard with per-project health, declare and watch cross-project blocking dependencies, and queue mutations into named scenarios for comparison. When the user adjusts scope on one project or moves a person to another, the engine immediately re-derives forecast dates, slack days, utilisation, and dependency violations across the whole portfolio.

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.

Programme model

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

Demo / regression mode loads a fixture programme containing eight projects: DEMO, DEMOHR, AUTH, PAY, MOB, DATA, plus internal AUTOLEVEL and NOSPR.

Toolbar / header

Add Project form

Add Project form expanded — Project Key, Board ID, JQL Filter (required), plus Name, Target Date, Estimation Mode, Sprint Capacity, Sprint Length, Velocity Lookback, Capacity Mode, 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, Sprint Capacity, Sprint Length, Velocity Lookback, Capacity Mode, Sprint Mode toggle, and Add Project / Cancel buttons

Required fields:

Optional settings:

Add Project persists the new entry into the programme store and triggers a fetch.

Edit / Delete

Each project row has Edit and Delete buttons. Edit lets the user change any setting; only the project key is required so settings can be edited even when board ID or JQL are missing. Delete opens a ConfirmDialog; on confirm, the engine removes the project and cleans up its allocations and dependencies.

Per-mutation explanations

When mutations exist from inline edits (scope cell, target date, team +/−), each one renders as a row below the affected project showing a plain-language explanation of what changed and the cumulative delta vs the baseline. Each row carries a × Revert button that removes only that step from the draft. There is no global save or reset; reverting every mutation returns the view to the baseline.

Portfolio dashboard table

One row per project. Columns:

When mutations are pending, affected cells render in a slightly orange background; hovering shows the before / after.

Programme rollup row

When at least two projects exist, a footer row sums the portfolio:

Project drilldown

Clicking a project row inside the dashboard opens an inline detail view with stat cards (Progress, Forecast, Slack, Utilisation), a longer progress bar, an alerts section, and a data-quality block listing unestimated %, dependency violations, and the dependency name with day-delta.

A Projects breadcrumb at the top returns to the dashboard.

Mutation types

The scenario builder supports six mutation types. Three change allocation, three change work / deadline:

After any mutation the engine re-derives health from (slackDays, errorCount, warningCount, utilization) so health and slack and forecast always agree.

Team Allocation Matrix

Below the project table, a members × projects grid. Internal projects (AUTOLEVEL, NOSPR) are hidden by MATRIX_HIDDEN_PROJECT_KEYS.

Team Allocation Matrix expanded under the portfolio table — per-member rows with one column per project, each cell stacking a percent input above an editable
Team Allocation Matrix expanded under the portfolio table — per-member rows with one column per project, each cell stacking a percent input above an editable "= X pts/hrs" computed line, and a Status column showing per-unit Σ percents that turn red when totals exceed 100%

Cell editing

Each cell shows two stacked inputs:

Editing and blurring either field saves immediately to the program store. Storage is percent; the absolute is a derived editor. Toggling a project's estimation mode never loses data — both unit percents are persisted independently.

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 utilisation and forecast columns.

Capacity-change live update

Changing a member's hoursPerWeek or pointsPerSprint (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.

Critical Chain panel

A collapsible Critical Chain section sits below the project table 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 in Program All mode the chain is computed across every registered project; otherwise it is filtered to the selected project. The panel can also auto-fire its AI box once per chain (see ALGORITHMS section 17 — Critical Chain AI Box) when an API key is configured.

Cross-Project Dependencies

A list and an Add form below the matrix.

Dependency violations

When at least one declared dependency has the upstream forecast past the downstream target, a red alert box lists each violation: 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