
Gantt View for Projects
A real Gantt chart for Odoo Community: drag to reschedule, dependency arrows, automatic successor shifting, critical path and milestones.
Available for Odoo 16.0, Odoo 17.0, Odoo 18.0, Odoo 19.0. Technical name bambooforge_gantt.
Gantt View for Projects
Community Odoo plans projects in lists and kanbans; the schedule lives in somebody's head. This app draws it — and lets you drag it.
What you get
A Gantt timeline over your existing tasks: one bar per task, grouped by project or by assignee, zoomed by day, week or month, with weekend shading and a dashed today line. The chart opens scrolled to today, not to the oldest task in history.
Drag to reschedule — grab a bar and move it whole days; grab either edge to stretch or shrink it. A plain click opens the task.
Automatic successor shifting: when a moved task would now overlap a task that depends on it, the dependent is pushed to start where its predecessor ends — keeping its duration — and so on down the chain. Everything that moved is written in one call.
Dependency arrows drawn from Odoo's own task dependencies (Settings → Task Dependencies on the project).
Critical path — one checkbox highlights the chain of dependent tasks with the largest total duration: the tasks that decide the end date.
Milestones as diamonds on the project row (green once reached).
A progress strip inside each bar, set from the task form.
Built from scratch in OWL and SVG. No bundled Bryntum/dhtmlx builds, no extra JavaScript licence, nothing phoning home.
Install
Install BambooForge Project Gantt (depends on Project only).
A Gantt menu appears in the Project app, and every project form gets a Gantt smart button scoped to that project.
To see dependency arrows, enable Task Dependencies on the project.
Where the dates come from
The chart draws its own pair of fields — Gantt Start and Gantt End on the task (visible under Extra Info → Gantt Schedule). They are deliberately separate from the deadline: re-planning the schedule does not silently move the commitment you gave the customer.
The first time a task appears on the chart with no schedule, it gets a sensible one:
Start: the assignment date, else the creation date — at 08:00.
Length: the allocated hours at 8 h/day; else up to the deadline; else three days.
After that the fields belong to you — the chart, the task form and any automation all write the same two fields.
Moving tasks
Drag the bar to move it, whole days at a time (the time of day is kept, so a task that starts at 08:00 keeps starting at 08:00).
Drag an edge to change the duration.
If tasks depend on the one you moved and would now overlap it, they are pushed right, keeping their durations, cascading down the dependency chain. Tasks that already start after their predecessor ends are left alone — a planned gap is your business, not the chart's.
Dependency cycles (possible via imports) are detected: the shift stops instead of looping forever, and the critical path is simply not shown.
Critical path
Tick Critical path and the chain of dependent tasks with the largest total duration turns red — bars and arrows. That chain decides the project end date: shorten anything on it and the project ends earlier; shorten anything off it and nothing happens. The computation runs server-side on the tasks currently displayed.
Limits, stated plainly
Bars snap to whole days; this is a planning chart, not a time clock.
The schedule follows the company working calendar; the critical path still weighs each bar by its calendar length, and does not model resource contention.
Progress is a manual percentage — honest and simple; it does not try to guess from timesheets.
Grouping by assignee shows each task under its first assignee.
What changed in 1.1
People on the chart. The project manager sits on the project row (avatar and name); every bar carries its assignee's avatar.
Double-bookings surface themselves. One person, two open tasks, overlapping days: the bars get a warning stroke, the overlap window is shaded on the assignee lane, the toolbar counts the conflicts and can filter to them - and the tooltip names the colliding task.
Working calendars. Durations count working days on the company calendar: bars start on a workday, hour-based lengths skip weekends and closing days, moved or pushed tasks never restart on a holiday, and company closing days are shaded like weekends.
What changed in 1.2
Baseline. One button freezes today's schedule; a toggle draws the frozen bars under the live ones and the tooltip states the slip in days. Re-planning stops erasing the promise it is measured against.
Workload heatmap. A toggle adds one row per person under the chart, one cell per day: green one task, amber two, red three or more - who can take more work is a glance.
What changed in 1.3
Typed dependencies. A dependency can now say how two tasks are tied - finish to start (the default), start to start, finish to finish or start to finish - and carry a lag in working days, negative for a lead. Rescheduling honours the relationship, the arrows leave and land at the right ends, and anything other than a plain finish-to-start is labelled on the link (SS+2, FF, FS-3).
Export to PNG. One button rasterises the chart, row labels included, for the status report or the site notice board.
Support
support@bambooforge.dev — answered within two business days. This module is licensed OPL-1; one purchase covers one production database plus its staging copies.
Screens






