# Installation and Setup
URL: https://pro.rv-grid.com/guides/gantt/introduction/installation/
Source: src/content/docs/guides/gantt/introduction/installation.mdx
Description: Install @revolist/revogrid-enterprise and initialize your first Gantt project.
## Installation

To use the Enterprise Gantt features, you must first install the enterprise package:

```bash
pnpm add @revolist/revogrid-enterprise
```

### Registering the Plugin

Register the `GanttPlugin` in your grid instance. This adds the scheduling engine, timeline projection, and Gantt-specific data handling to RevoGrid.

```typescript
import { GanttPlugin } from '@revolist/revogrid-enterprise';

grid.plugins = [GanttPlugin];
```

  Gantt styles are included automatically from the enterprise package. Ensure your build system supports SCSS or CSS imports from node_modules.

## Basic Project Setup

A Gantt project requires a core configuration object, at least one calendar, and a task source. Below is a minimal setup:

```typescript
grid.gantt = {
  id: 'project-1',
  name: 'Project Alpha',
  version: '1',
  currency: 'USD',
  timeZone: 'UTC',
  primaryCalendarId: 'cal-standard',
  updatedAt: new Date().toISOString(),
};

grid.ganttCalendars = [{
  id: 'cal-standard',
  name: 'Standard',
  timeZone: 'UTC',
  workingDays: [1, 2, 3, 4, 5], // Monday to Friday
  holidays: [],
  hoursPerDay: 8,
}];

grid.source = [
  { id: 'task-1', name: 'Initial Research', startDate: '2026-04-06', duration: 5 }
];
```

Once the basic project is initialized, you can incrementally add [Dependencies](../concepts/dependencies), [Resources](../scheduling/resources), and [Baselines](../concepts/baselines).

## Task Table Columns

Gantt specific columns can be added to your grid using the `createDefaultTaskTableColumn` utility. These columns are designed to work with the scheduling engine and timeline.

```typescript
import { createDefaultTaskTableColumn } from '@revolist/revogrid-enterprise';

grid.columns = [
  createDefaultTaskTableColumn('wbs'),
  createDefaultTaskTableColumn('name'),
  createDefaultTaskTableColumn('startDate'),
  createDefaultTaskTableColumn('duration'),
  createDefaultTaskTableColumn('predecessors'),
];
```

### Key Column Concepts:
- **Inputs**: Columns like `name`, `startDate`, and `duration` are typically editable and drive the scheduler.
- **Projected Outputs**: Columns like `earlyStartDate`, `lateStartDate`, and `totalSlackDays` are computed by the scheduler and are read-only.
- **Custom Columns**: You can mix standard RevoGrid columns with Gantt-specific columns in the same `grid.columns` array.
