the project plan
JavaScript Gantt Chart and Project Planning
A task list that draws its own schedule. Give the plan its tasks and how they depend on one another and it works out when each can start and finish, how much slack it has, and which tasks have none. That run is the critical path, drawn in red so the risk in the plan is the first thing you see.
Try the Gantt Free on localhost
who is booked too much
Put people on the plan and see the overload.
Assign people to tasks and the plan outlines the bars that clash and rings the avatar of anyone booked past what they can do. Level the plan in one press and lower-priority work shifts later.
what the plan gives you
A real project plan, in the box.
The critical path, computed
The schedule engine works out every task's earliest and latest start and finish and its slack, then draws the zero-slack run in red. Change anything and it recomputes, so the critical path is always the current one.
The four dependency links
Tasks depend on one another in each of the four standard ways, from finish-to-start through to start-to-finish, each with an optional lead or lag, and the arrows between the bars show how the plan holds together.
Milestones and summaries
A milestone sits as a diamond on the date it marks. A task made the parent of others becomes a summary rolled up from its children, its window and its progress derived from the work underneath it.
Progress and today
Each bar fills to show how far along its task is, and the timeline runs on a calendar axis with a line marking today and weekends shaded, so the state of the plan reads at a glance and a task slipping behind is easy to spot.
Edit from the keyboard too
Focus a bar and the arrows move it, the shift key resizes it, and one key links two tasks. Every task carries a spoken description of its dates, progress and slack, and every edit is announced, so the plan is usable without a mouse.
Take it out of the page
Write the scheduled tasks out as a spreadsheet, or hand off the drawn chart as an image. The split view prints, saves as a PDF and exports as PNG or SVG with its resource bands included, so the plan on the screen becomes the plan in the status report without a second tool. Leveling a busy plan finishes in milliseconds.
Working calendars and a resource histogram
Give each person their own working days, hours and leave. A histogram band beneath the plan shows workload per person in hours, percent of capacity or cost, with a capacity line and the overload picked out.
Schedule by effort or by duration
Hold the duration, the effort or the units fixed per task. Add a person to a fixed-effort task and it finishes sooner; give it to a part-timer and it runs longer.
Every MS Project date constraint
Start or finish no earlier than, start or finish no later than, must start on, must finish on, as soon as possible and as late as possible. A task that misses a ceiling is reported and marked on its bar.
Assign people with a warning first
Search your people, set each share and see their load over the task's dates. An over-allocation is flagged before you commit, and one Apply is one change.
Rates, cost and the S-curve
Price people per hour, materials per unit and flat costs, and watch cost roll up from tasks to the whole project. The S-curve charts planned value, earned value and actual cost, and a progress line shows where each task really is.
Undo and redo, everywhere
Every move, resize, cell edit, link, assignment and even a whole leveling run undoes in one step, from the keyboard or from code.
Because the plan is built from the tasks a grid already holds, the same live source that fills your grids can fill the plan too, and each change recomputes the schedule and redraws it, so the timeline stays current as the work moves.
Drag a bar, or edit a cell
Drag a bar to move a task, or its edge to make it shorter or longer, and the new dates are written back to the row. In the split view the task grid and the timeline share one row, so you can double-click a cell and edit a name, an assignee or a date in place and the bar keeps up. Hover a bar and its dependency chain lights up, so you can see at a glance what a task waits on and what waits on it. The task list and the timeline are one plan seen two ways.
Honest about trouble
A task dragged earlier than its dependencies allow is flagged rather than quietly moved, so you see the conflict instead of shipping it. Anything running late is marked, and a deadline you set turns a slip into a warning you can act on.
a plan from a task list
The wiring reads the way the plan looks.
Drop in two script tags, then hand createGantt your tasks and how
they depend on one another. Call mount to draw the timeline, turn
on editable for drag-editing, and bind a task grid so a drag writes
the dates back and an edit in the grid redraws the bar.
On a phone or tablet, press and hold a bar or one of its handles to move or resize it, and a swipe still scrolls the timeline. Pinch with two fingers to zoom the time axis in or out.
The Gantt is a separate, opt-in module with a global of its own. It changes nothing in the grid core and a page that never shows a plan never loads it. See its size next to every other module in the module map.
<!-- the grid and the gantt module, as globals -->
<script src="https://cdn.latticegrid.dev/lattice-grid@1.110.1/lattice-grid.min.js"></script>
<script src="https://cdn.latticegrid.dev/lattice-grid@1.110.1/modules/gantt.min.js"></script>
<script>
var createGantt = LatticeGridGantt.createGantt;
// Give it tasks and how they depend on one another; it works out the schedule.
var plan = createGantt({
tasks: [
{ id: 'design', name: 'Design', duration: 5, percentComplete: 100 },
{ id: 'build', name: 'Build', duration: 8, percentComplete: 40 },
{ id: 'launch', name: 'Launch', milestone: true }
],
dependencies: [
{ from: 'design', to: 'build', type: 'FS' }, // finish-to-start
{ from: 'build', to: 'launch', type: 'FS' }
]
});
// Draw it, and let a drag on a bar edit the dates.
plan.mount(document.querySelector('#plan'), {
editable: true,
today: 20340, // the today line
dateAxis: true, // axis ticks as calendar dates
nonWorking: 'weekends' // shade Saturdays and Sundays
});
</script>
demos
Run it, then change it.
Gantt chart
Drag the bars, set the four link types and watch the critical path move.
Split view
The task tree and the timeline as one row-aligned surface.
Resource management
Overallocation shown on the plan, then levelled in one press.
Microsoft Project files
Read a Project XML file into a schedule and write it back out.
Kanban board
The same rows as cards in status columns.
docs
The API, the htmx page and the board view.
Gantt API
createGantt, the task and dependency types and the schedule it returns.
Gantt with htmx
A plan on a server-rendered page, with no build step.
Resource scheduler
When you need a roster of people rather than a plan.
Kanban board
The same rows as a board.
Also in the licence
- GridThe data grid with derived grids, statistics and Explain built in.
- DashboardsKPI tiles, charts and the Designer, on the same rows.
- KanbanA board over the rows you already have.
- CalendarA schedule view over a date column.
- SchedulerPeople and machines allocated to work.
- FormsForms, the record editor, the app shell, and the context menu, sidebar and toolbar.