Build A Production Gantt Project
This tutorial starts with any framework quick start and builds toward the same data flow used by the full showcase.
-
Add project hierarchy. Keep task rows flat and connect children with
parentId.grid.source = [{ id: 'delivery', name: 'Delivery', type: 'summary', startDate: '2026-07-14', duration: 8 },{ id: 'design', parentId: 'delivery', name: 'Design', startDate: '2026-07-14', duration: 3 },{ id: 'build', parentId: 'delivery', name: 'Build', startDate: '2026-07-17', duration: 5 },{ id: 'launch', name: 'Launch', type: 'milestone', startDate: '2026-07-24', duration: 0 },]; -
Add dependencies. Use stable task IDs and one of
FS,SS,FF, orSF.grid.ganttDependencies = [{ id: 'd1', predecessorTaskId: 'design', successorTaskId: 'build', type: 'FS', lagDays: 0 },{ id: 'd2', predecessorTaskId: 'build', successorTaskId: 'launch', type: 'FS', lagDays: 0 },]; -
Enable supported editing. The managed task columns route edits through Gantt scheduling and validation.
grid.gantt = {...grid.gantt,allowTaskCreate: true,taskCreateRow: true,contextMenu: {},};Inline cell editing, timeline drag/resize/progress handles, dependency drawing, the task editor, and the context menu all use the same project state. See Task Editing.
-
Assign resources. Resources and assignments are separate collections so multiple resources can work on one task.
grid.ganttResources = [{id: 'designer', name: 'Avery', role: 'Designer', calendarId: 'standard',allocationCapacity: 100, hourlyCost: 90,}];grid.ganttAssignments = [{id: 'a1', taskId: 'design', resourceId: 'designer',allocationUnits: 100, workHours: 24, responsibility: 'Visual design',}]; -
Show schedule analysis. Critical path and baseline overlays are opt-in visual layers.
grid.gantt = {...grid.gantt,visuals: {...grid.gantt?.visuals,showCriticalPath: true,showBaseline: true,baselineId: 'approved',},};grid.ganttBaselines = [{id: 'approved',name: 'Approved plan',capturedAt: '2026-07-14T00:00:00.000Z',tasks: [{ taskId: 'design', startDate: '2026-07-14', endDate: '2026-07-16', duration: 24, progressPercent: 0 },{ taskId: 'build', startDate: '2026-07-17', endDate: '2026-07-23', duration: 40, progressPercent: 0 },],}]; -
Persist complete project snapshots. Keep application state authoritative and replace grid collections after a successful save or server update.
import { exportProjectSnapshot, parseProjectSnapshotJson } from '@revolist/revogrid-enterprise';const json = exportProjectSnapshot(snapshot, { space: 2 });const restored = parseProjectSnapshotJson(json);if (restored.ok) applyProject(restored.project); -
Add reporting actions. Grid CSV/Excel export covers task-table data; the print recipe prepares a combined task-table/timeline report.
import { createPrintPdfExportRecipe } from '@revolist/revogrid-enterprise';const print = createPrintPdfExportRecipe({ target: document.querySelector('#gantt')!, document, window });print.exportProject(snapshot, { label: 'Delivery plan' });
Next, browse all Gantt examples, review configuration, or open the API reference.