Appearance
Project Schedules
Building a programme, resourcing it, levelling it, and reading the cost — the schedule page end to end.
Last verified: 2026-09-05 Status: Current
Every project can carry one or more schedules: a network of tasks with durations and links, run through the Critical Path Method to give you early and late dates, float, and a critical path, drawn as a Gantt.
Open one from the project detail page → Planning → Open schedule, or go straight to /admin/projects/{projectId}/schedule.
The three views
The buttons at the right of the command bar switch between them, and the view you are on is kept in the address bar, so a link you paste to a colleague opens where you were.
| View | What it is for |
|---|---|
| Gantt (default) | The programme as bars, with dependency arrows, the critical path, ghost bars for a baseline, and a today line. |
| Table | The same tasks as rows — duration, dates, float, assigned resources, cost — and the place to edit or resource a task quickly. |
| Resources | The crews, plant and materials this project can draw on. |
Step 1 — Declare your resources
A resource is anything the programme consumes: a civil crew, a mobile crane, a commissioning engineer, a delivery of pipe. Resources belong to the project, not to one schedule, so a crane you declare once serves every schedule you draft — and you can set them up before you have drawn a programme at all.
Open the schedule page and click the Resources view (the people icon).
Click Add resource.
Fill in:
Field Meaning Name What you call it on site — "Civil crew", "40 t crane". Type Labour, Equipment or Material. Presentational grouping. Capacity per day How many of it are available. 1is one crew;2is two. This is the ceiling levelling works to.Hours per day The working day for this resource. A crane on a double shift is 16. Cost rate Cost per hour. Used to price any task you do not give a budget to. Save.
Capacity and hours must both be greater than zero, and the rate cannot be negative — a resource that supplies nothing would level to nothing and cost nothing, which is not a resource. The dialog says so rather than letting the number through.
The Assigned tasks column tells you how many tasks each resource is on. Editing a resource takes effect everywhere at once; deleting one takes its assignments with it, and the confirmation says how many tasks that is before you commit.
Step 2 — Assign resources to tasks
There are two routes to the same editor:
- Table view → the Assign resources icon on a task's row. Fastest when you are working down the programme.
- Task edit dialog → the Resources section. Convenient when you are editing the task anyway.
In either one:
- Pick a resource.
- Type the units as a percentage.
100%is the whole resource on this task;50%is half-time;200%is two crews. Zero is not allowed. - Click Assign.
Assignments save the moment you make them — there is no separate Save for them, and closing the dialog does not undo one. Remove an assignment with the × on its chip.
A resource already on the task is not offered a second time; to change how much of it a task takes, unassign and reassign at the new figure.
Once a task is resourced you will see it in three places: as chips in the table's Resources column, as chips under the Gantt bar's tooltip, and in the histogram.
Step 3 — Compute, then level
Compute runs the critical path method and fills in the dates, float and the critical path. Do this first: levelling starts from the CPM early dates, so Level stays unavailable until you have.
Level then moves tasks forward until no day asks for more of a resource than exists. Float is spent before the end date moves, so a task with slack absorbs the conflict and the programme does not slip. When the pass finishes, the Levelled switch turns itself on so you are looking at the answer you asked for; turn it off to compare against the unlevelled plan.
Levelling reads your assignments. On a programme where nothing is assigned it runs and changes nothing — not because there are no conflicts, but because there is nothing to conflict. The button's tooltip says so.
Reading the histogram
The chart under the Gantt shows weekly workload.
- Before you assign anything, it shows the load the programme implies — each active task counted at a nominal 8 h/day, grouped by phase. It is a shape, not an estimate, and the caption says so.
- Once anything is assigned, it switches to the real thing: hours each named resource is actually claimed for, stacked by resource.
On the resourced chart there are two kinds of line:
- The solid line is the total your project's resources could supply in that week. Bars above it are over-committed overall.
- A dashed line per resource sits at that resource's own weekly ceiling. A segment that breaks its own line is highlighted even when the total is comfortable — which is how you catch one crane booked twice over inside a week that looks fine in aggregate.
The Levelled switch drives the histogram too. Before the pass the bars break the lines; after it they should not. That before/after is the quickest check that levelling did what you wanted.
Cost and earned value
A task's cost comes from one rule:
- If you typed a budget cost on the task, that wins. Nothing derived overrules a number a human entered.
- Otherwise it is the sum of its assignments: units × cost rate × hours per day × duration.
- A task with neither is simply unpriced — it costs zero, which is the honest answer.
In the table's Cost column, a cost the system derived is marked ƒ. The earned-value card below the chart repeats the split: how many tasks were priced from their assignments and how many from a typed budget.
The card itself gives you the PMBOK measures — BAC, PV, EV, AC, SV, CV, SPI, CPI, EAC, VAC — and an S-curve, at a status date you pick. Negative variance or an index below 1.00 is unfavourable. Capture a Baseline first if you want the numbers measured against a frozen plan rather than against today's dates.
What it does not do yet
- Levelling has no working calendar: a "day" is a continuous day and weekends do not exist.
- Levelling handles one schedule at a time, so two schedules of the same project can each claim the same resource.
- An assignment's units cannot be edited in place — unassign and reassign.
- There is no bulk assign across several tasks at once.
- Actual cost is typed by hand; there is no timesheet or ledger feed.
- Dependencies are created through the API, not drawn on the Gantt by hand.
See also
- Creating Projects
- Developer reference:
docs/04-features/project-mgmt/planning.md