Top Related Projects
Open Source Javascript Gantt
Gantt Gantt Gantt Timeline Schedule Calendar [ javascript gantt, js gantt, projects gantt, timeline, scheduler, gantt timeline, reservation timeline, react gantt, angular gantt, vue gantt, svelte gantt, booking manager ]
jQuery Gantt editor
🍞📅A JavaScript calendar that has everything you need.
Quick Overview
DHTMLX Gantt is a JavaScript library for creating interactive Gantt charts. It provides a powerful set of features for project management and scheduling, allowing developers to create visually appealing and functional Gantt charts for web applications.
Pros
- Rich set of features including task management, resource allocation, and timeline customization
- Highly customizable with extensive API and event system
- Cross-browser compatibility and responsive design
- Integration with popular frameworks like React, Angular, and Vue.js
Cons
- Commercial license required for most use cases
- Steep learning curve due to the extensive API and configuration options
- Limited built-in themes and styling options
- Performance may degrade with very large datasets
Code Examples
- Creating a basic Gantt chart:
gantt.init("gantt_container");
gantt.parse({
data: [
{ id: 1, text: "Task 1", start_date: "2023-05-01", duration: 5 },
{ id: 2, text: "Task 2", start_date: "2023-05-06", duration: 3 }
]
});
- Adding custom columns to the Gantt chart:
gantt.config.columns = [
{ name: "text", label: "Task name", width: "*", tree: true },
{ name: "start_date", label: "Start time", align: "center" },
{ name: "duration", label: "Duration", align: "center" }
];
gantt.init("gantt_container");
- Enabling resource management:
gantt.config.resources = [
{ id: 1, name: "John Doe" },
{ id: 2, name: "Jane Smith" }
];
gantt.config.resource_assignment = "resource_id";
gantt.init("gantt_container");
Getting Started
- Include the DHTMLX Gantt library in your HTML file:
<script src="https://cdn.dhtmlx.com/gantt/edge/dhtmlxgantt.js"></script>
<link rel="stylesheet" href="https://cdn.dhtmlx.com/gantt/edge/dhtmlxgantt.css">
- Create a container for the Gantt chart:
<div id="gantt_container" style="width:100%; height:500px;"></div>
- Initialize the Gantt chart and add data:
gantt.init("gantt_container");
gantt.parse({
data: [
{ id: 1, text: "Project kickoff", start_date: "2023-05-01", duration: 1 },
{ id: 2, text: "Design phase", start_date: "2023-05-02", duration: 5 }
]
});
This will create a basic Gantt chart with two tasks. You can further customize the chart by configuring various options and using the extensive API provided by DHTMLX Gantt.
Competitor Comparisons
Open Source Javascript Gantt
Pros of Gantt (frappe)
- Lightweight and simple to use
- Open-source with MIT license
- Built with SVG, making it highly customizable
Cons of Gantt (frappe)
- Limited features compared to DHTMLX Gantt
- Less extensive documentation and community support
- Fewer built-in integrations with other tools
Code Comparison
Gantt (frappe):
var tasks = [
{
id: 'Task 1',
name: 'Redesign website',
start: '2016-12-28',
end: '2016-12-31',
progress: 20,
dependencies: 'Task 2, Task 3'
},
// ...
]
var gantt = new Gantt("#gantt", tasks);
DHTMLX Gantt:
gantt.init("gantt_here");
gantt.parse({
data: [
{ id: 1, text: "Project #1", start_date: "01-04-2023", duration: 18 },
{ id: 2, text: "Task #1", start_date: "02-04-2023", duration: 8, parent: 1 },
// ...
]
});
Both libraries offer easy initialization and task definition, but DHTMLX Gantt provides more advanced features and configuration options out of the box. Gantt (frappe) focuses on simplicity and ease of use, while DHTMLX Gantt offers a more comprehensive solution for complex project management needs.
Gantt Gantt Gantt Timeline Schedule Calendar [ javascript gantt, js gantt, projects gantt, timeline, scheduler, gantt timeline, reservation timeline, react gantt, angular gantt, vue gantt, svelte gantt, booking manager ]
Pros of gantt-schedule-timeline-calendar
- More flexible and customizable, allowing for greater control over the appearance and behavior of the Gantt chart
- Supports multiple views (timeline, calendar, resource) out of the box
- Offers a more modern and responsive user interface
Cons of gantt-schedule-timeline-calendar
- Less mature and potentially less stable compared to DHTMLX Gantt
- Smaller community and fewer resources available for support and troubleshooting
- May require more setup and configuration to achieve desired functionality
Code Comparison
gantt-schedule-timeline-calendar
import { GSTCResult } from 'gantt-schedule-timeline-calendar';
const gstc = GSTCResult({
element: document.getElementById('gstc'),
items: [...],
columns: [...],
});
DHTMLX Gantt
gantt.init("gantt_here");
gantt.parse({
data: [...],
links: [...]
});
Both libraries offer straightforward initialization, but gantt-schedule-timeline-calendar provides a more modern, modular approach. DHTMLX Gantt has a simpler setup process, which may be preferable for quick implementations. The choice between the two depends on specific project requirements, desired customization level, and development team preferences.
jQuery Gantt editor
Pros of jQueryGantt
- Open-source and free to use, making it accessible for all projects
- Lightweight and easy to integrate into existing jQuery-based applications
- Supports exporting to PDF and PNG formats
Cons of jQueryGantt
- Less frequent updates and maintenance compared to gantt
- Limited documentation and community support
- Fewer built-in features and customization options
Code Comparison
gantt:
gantt.init("gantt_here");
gantt.parse({
data: [
{ id: 1, text: "Task 1", start_date: "2023-05-01", duration: 5 },
{ id: 2, text: "Task 2", start_date: "2023-05-06", duration: 3 }
]
});
jQueryGantt:
$("#ganttChart").gantt({
source: [
{ name: "Task 1", desc: "", values: [{ from: "/Date(1682899200000)/", to: "/Date(1683331200000)/", label: "Task 1", customClass: "ganttRed" }] },
{ name: "Task 2", desc: "", values: [{ from: "/Date(1683331200000)/", to: "/Date(1683590400000)/", label: "Task 2", customClass: "ganttBlue" }] }
]
});
Both libraries offer Gantt chart functionality, but gantt provides a more comprehensive and actively maintained solution with extensive documentation and features. jQueryGantt is a simpler, lightweight alternative that may be suitable for smaller projects or those already using jQuery.
🍞📅A JavaScript calendar that has everything you need.
Pros of tui.calendar
- More versatile with multiple calendar views (daily, weekly, monthly)
- Extensive theming and customization options
- Better support for recurring events
Cons of tui.calendar
- Steeper learning curve due to more complex API
- Larger file size, potentially impacting load times
- Less focus on Gantt-specific features
Code Comparison
tui.calendar:
import Calendar from '@toast-ui/calendar';
const calendar = new Calendar('#calendar', {
defaultView: 'week',
template: {
time: function(schedule) {
return moment(schedule.start.getTime()).format('HH:mm');
}
}
});
gantt:
gantt.init("gantt_here");
gantt.parse({
data: [
{id: 1, text: "Task #1", start_date: "2023-03-15", duration: 3, progress: 0.6},
{id: 2, text: "Task #2", start_date: "2023-03-18", duration: 3, progress: 0.4}
]
});
tui.calendar offers more flexibility for various calendar views and customization, making it suitable for diverse scheduling needs. However, it may be overkill for projects primarily focused on Gantt charts. gantt provides a more straightforward API for Gantt-specific functionality, making it easier to implement and potentially more performant for Gantt-centric applications.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
DHTMLX Gantt - JavaScript Gantt Chart (Community Edition)
Quick start | Build from source | Features | Community vs PRO | Frameworks | License | Links
dhtmlx-gantt is an open-source JavaScript Gantt chart library for visualizing and managing project schedules: a configurable task grid, a zoomable timeline, projects and milestones, four dependency link types, drag-and-drop scheduling, data export, and 32 built-in locales.
It is a framework-agnostic component that works with plain JavaScript and integrates with React, Angular, Vue, and Svelte.

This is the Community Edition of DHTMLX Gantt - distributed as the dhtmlx-gantt npm package under the MIT License and shipped as readable source code you can fork, modify, and rebuild. For advanced project management capabilities such as auto-scheduling, critical path, and resource management, see the PRO edition.
Quick start
Install the package, import the script and styles, and initialize the chart in a container element.
Install
npm install dhtmlx-gantt
Import
With a module bundler (Vite, webpack, Rollup, â¦):
import { gantt } from "dhtmlx-gantt";
import "dhtmlx-gantt/codebase/dhtmlxgantt.css";
The side-effect import also registers a global gantt, so plain <script> tags work against the bundled files in codebase/:
<script src="codebase/dhtmlxgantt.js"></script>
<link rel="stylesheet" href="codebase/dhtmlxgantt.css">
Add a container
<div id="gantt_here" style="width: 100%; height: 600px;"></div>
Initialize
gantt.config.date_format = "%Y-%m-%d";
gantt.init("gantt_here");
gantt.parse({
data: [
{ id: 1, text: "Website redesign", type: "project", progress: 0.4, open: true },
{ id: 2, text: "Research", start_date: "2026-06-01", duration: 4, parent: 1, progress: 1 },
{ id: 3, text: "Wireframes", start_date: "2026-06-05", duration: 6, parent: 1, progress: 0.6 },
{ id: 4, text: "Visual design", start_date: "2026-06-11", duration: 8, parent: 1, progress: 0.2 },
{ id: 5, text: "Launch", start_date: "2026-06-19", type: "milestone", parent: 1 }
],
links: [
{ id: 1, source: 2, target: 3, type: "0" }, // finish-to-start
{ id: 2, source: 3, target: 4, type: "0" },
{ id: 3, source: 4, target: 5, type: "0" }
]
});
See a live demo · or run the bundled gallery with npm run start and open /samples/.
Build from source
Unlike a compiled-only distribution, the Community Edition ships its TypeScript/JavaScript sources and LESS styles, so you can read, change, and rebuild the library.
git clone https://github.com/DHTMLX/gantt.git
cd gantt
npm install
npm run build # builds codebase/dhtmlxgantt.js (+ es module, css, d.ts)
npm run start # dev mode: watch build + samples server at http://localhost:5173
npm run test # builds, then loads every sample and fails on console errors
npm run lint # eslint over src/
codebase/ is build output (generated, not committed). After npm run build you can serve the files from codebase/ directly via <script> tags, exactly like the npm package.
Repository layout
src/ library sources (TypeScript + JavaScript, LESS styles)
samples/ runnable demos (npm run start, then open /samples/)
scripts/ build, dev server, and test runner scripts
codebase/ build output (generated, not committed)
Testing
npm run test # smoke test: builds, then loads every sample
npm run test 05_lightbox # smoke just one samples folder
npm run lint # eslint over src/
npm run test is a smoke pass: it loads every built sample headless and fails if any page throws or logs a console.error. It runs the build first; pass --no-build to skip it (e.g. in CI, where the build is a separate step).
Basic usage
Configuring the grid and time scale
// Configure grid columns
gantt.config.columns = [
{ name: "text", label: "Task", tree: true, width: 220 },
{ name: "start_date", label: "Start", align: "center", width: 90 },
{ name: "duration", label: "Days", align: "center", width: 60 },
{ name: "add", label: "", width: 44 } // add-task button column
];
// Set the time scale unit and step
gantt.config.scale_unit = "week";
gantt.config.date_scale = "%M %d";
// Highlight weekends on the timeline
gantt.templates.scale_cell_class = function (date) {
if (date.getDay() === 0 || date.getDay() === 6) return "weekend";
};
gantt.init("gantt_here");
Enabling plugins
Activate optional extensions before calling gantt.init():
gantt.plugins({
tooltip: true, // hover tooltips on task bars
quick_info: true, // touch-friendly task popup
fullscreen: true, // fullscreen toggle
keyboard_navigation: true, // arrow-key navigation
drag_timeline: true, // drag to scroll the timeline
click_drag: true // draw new tasks by dragging on the timeline
});
gantt.init("gantt_here");
Multiple chart instances
Render several independent Gantt charts on one page with the Gantt factory:
import { Gantt } from "dhtmlx-gantt";
var chartA = Gantt.getGanttInstance();
var chartB = Gantt.getGanttInstance();
chartA.init("gantt_a");
chartB.init("gantt_b");
The default gantt export is itself an instance created this way, so existing single-chart code keeps working unchanged.
Reacting to changes
gantt.attachEvent("onAfterTaskUpdate", function (id, task) {
fetch("/api/tasks/" + id, {
method: "PUT",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(task)
});
});
gantt.attachEvent("onAfterLinkAdd", function (id, link) {
fetch("/api/links", {
method: "POST",
body: JSON.stringify(link)
});
});
For two-way sync with a REST backend, use the bundled dataProcessor - see Backend integration.
Features
The Community Edition covers the everyday Gantt feature set, including projects (summary tasks) and milestones:
- Task grid - any number of configurable columns, a tree column, and inline cell editing
- Projects / summary tasks and milestones - task types with type-aware rendering and lightbox
- Zoomable time scale - single or dual scale; configurable unit (hour ⦠year) and step
- Four dependency types - finish-to-start, start-to-start, finish-to-finish, start-to-finish, with lag and drag-to-create links
- Drag-and-drop scheduling - move task bars to reschedule; resize bars to change duration
- Progress indicators - completion shown as a filled bar segment, editable in the lightbox
- Lightbox task editor - configurable modal dialog; add your own controls
- Smart rendering - only visible rows/columns are drawn, for large datasets
- Multiple chart instances - render several independent Gantts on one page via the
Ganttfactory - Templates - override any rendered element (bars, grid cells, scale cells, tooltips)
- Plugins - tooltips, quick info, keyboard navigation, fullscreen, drag-timeline, click-drag
- Grid column resizing and a column-configuration API
- Data loading/saving - JSON/XML parsing and serialization, REST
dataProcessor - Export - to PDF, PNG, Excel, iCal, and MS Project via the DHTMLX online export service
- Skins - Material, Terrace, Meadow, Broadway, Skyblue, and more
- 32 locales, WAI-ARIA accessibility, touch support, CSP-compliant mode
- Event system - 100+ events covering interactions and lifecycle hooks
- TypeScript - bundled type definitions
Note:
codebase/dhtmlxgantt.d.tsdescribes the full product API, so it lists some PRO-only methods that are not present in this edition.
Community vs PRO
This edition is intended for schedule visualization and manual editing. Production project-management features - auto-scheduling, critical path, resource planning - are part of the commercial PRO edition.
| Feature | Community (MIT) | PRO |
|---|---|---|
| Task grid, columns, tree, inline editing | â | â |
| Zoomable single/dual time scale | â | â |
| Projects / summary tasks, milestones | â | â |
| Four dependency types (FS/SS/FF/SF) + lag | â | â |
| Drag-and-drop scheduling & bar resize | â | â |
| Progress, lightbox editor, templates | â | â |
| Smart rendering for large datasets | â | â |
| Multiple chart instances per page | â | â |
| Tooltips, quick info, keyboard nav, fullscreen | â | â |
| Drag-timeline, click-drag, grid column resize | â | â |
| Skins, 32 locales, accessibility, touch | â | â |
| JSON/XML loading, REST dataProcessor | â | â |
| Export to PDF/PNG/Excel/iCal/MS Project | â | â |
| Auto-scheduling | â | â |
| Critical path & slack | â | â |
| Resource management (assignments, histogram, grouping by resource) | â | â |
| Baselines & deadlines | â | â |
| Constraints | â | â |
| Split tasks & rollups | â | â |
| WBS codes | â | â |
| Grouping | â | â |
| Dynamic (on-demand) loading | â | â |
| Undo / redo | â | â |
| Multi-task selection & drag | â | â |
| Timeline markers / today line | â | â |
| Unscheduled tasks & new-task placeholder | â | â |
| Working-time calendars (setWorkTime, custom work calendars) | â | â |
Need advanced project management features?
The DHTMLX Gantt PRO edition adds auto-scheduling, critical path calculation, resource management (assignments, histograms, and grouping by resource), working-time calendars, baselines and deadlines, constraints, split tasks, WBS, and dynamic data loading - capabilities designed for production project-management applications.
Framework integration
DHTMLX Gantt works with popular front-end frameworks. The PRO edition provides ready-made components (ReactGantt, VueGantt, AngularGantt); the Community Edition integrates via the standard wrapper patterns documented below.
- React integration guide
- Angular integration guide
- Vue.js integration guide
- Svelte integration guide
- Salesforce integration guide
Backend integration
The bundled dataProcessor provides two-way data sync between the chart and a REST API:
License
This Community Edition of DHTMLX Gantt is licensed under the MIT License - see LICENSE.md.
You are free to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of this software in any project, including closed-source and commercial applications, subject only to the MIT License terms. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Copyright © 2026 XB Software Ltd.
Documentation and resources
The full product documentation applies to this edition within the feature scope above.
- Product page - overview, screenshots, and key features
- Documentation - getting-started guides, configuration, and tutorials
- API reference - config, templates, events, and methods
- Live demos and samples - interactive examples for each feature
- Community forum - Q&A and discussions
AI-assisted development
Building with an AI coding assistant (Claude Code, Cursor, Codexâ¦)? Two free helpers cover the dhtmlx-gantt package:
- DHTMLX MCP Server - connects your assistant to up-to-date DHTMLX documentation and API reference.
- Agent Skills - teach the assistant correct integration patterns and known pitfalls.
Useful links
If this project helps you, please â the GitHub repository.
Top Related Projects
Open Source Javascript Gantt
Gantt Gantt Gantt Timeline Schedule Calendar [ javascript gantt, js gantt, projects gantt, timeline, scheduler, gantt timeline, reservation timeline, react gantt, angular gantt, vue gantt, svelte gantt, booking manager ]
jQuery Gantt editor
🍞📅A JavaScript calendar that has everything you need.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot