# What Is A Scheduler?
URL: https://pro.rv-grid.com/guides/gantt/introduction/what-is-scheduler/
Source: src/content/docs/guides/gantt/introduction/what-is-scheduler.mdx
Description: Core scheduler concepts used by RevoGrid Enterprise Scheduler.
> **Scheduler = Gantt + resource management + auto-calculation**

Scheduling (especially in systems like Gantt/scheduler products) is built on a few **core components**. If any of these are weak or missing, the whole system becomes unreliable or hard to scale.

Here’s the structured breakdown:

---

## 🧱 1. Time Model (Foundation)

This defines how time is represented and computed.

**Key elements:**

* Time scale (minutes, hours, days, weeks)
* Working vs non-working time (calendars)
* Time zones
* Precision (e.g., milliseconds vs day-level)

👉 Without a solid time model, everything else breaks (especially dependencies and recalculation).

---

## 📅 2. Calendar System

Controls when work **can** happen.

**Includes:**

* Global calendar (e.g., Mon–Fri, 9–5)
* Resource calendars (different schedules per person/machine)
* Exceptions:

  * holidays
  * custom non-working days
  * overtime rules

👉 This directly affects duration calculations and task placement.

---

## 📦 3. Task Model

Core data structure of scheduling.

**Typical fields:**

* Start date
* End date
* Duration
* Progress (%)
* Constraints (e.g., “start no earlier than”)
* Priority

👉 Advanced systems treat **duration as derived**, not primary.

---

## 🔗 4. Dependency Engine (Critical)

Defines relationships between tasks.

**Types:**

* Finish → Start (most common)
* Start → Start
* Finish → Finish
* Start → Finish

**Also includes:**

* Lag / lead time
* Dependency validation
* Cycle detection

👉 This is where real scheduling complexity begins.

---

## ⚙️ 5. Scheduling Engine (Core Logic)

This is the “brain”.

**Responsibilities:**

* Auto-calculate task dates
* Resolve dependencies
* Apply constraints
* Recalculate on changes (reactivity)

Two main approaches:

* **Forward scheduling** (ASAP)
* **Backward scheduling** (ALAP)

👉 This must be deterministic and performant.

---

## 👥 6. Resource Management

Links tasks to resources.

**Includes:**

* Resource assignment
* Capacity tracking
* Over-allocation detection
* Load balancing

👉 Without this, it’s just a timeline—not real scheduling.

---

## 📊 7. Aggregation & Rollups

Needed for higher-level visibility.

**Examples:**

* Parent task duration = sum or span of children
* Progress rollup
* Resource usage summaries

👉 Important for portfolio-level views and reporting.

---

## 🔄 8. State & Recalculation System

Handles updates efficiently.

**Includes:**

* Incremental recalculation
* Change propagation
* Undo/redo

👉 Critical for UX in large datasets.

---

## 🖥️ 9. View Layer (Gantt / Scheduler UI)

How users interact with the schedule.

**Components:**

* Timeline grid
* Drag & drop
* Resize tasks
* Zoom levels
* Virtualization (for large datasets)

👉 This is where RevoGrid-level performance matters.

---

## 📡 10. Data Source Strategy

How data flows.

**Options:**

* Client-side (all data loaded)
* Server-side (page-based)
* Hybrid

👉 For large-scale apps → server-side becomes mandatory.

---

## 🔐 11. Constraints & Rules System

Business logic layer.

**Examples:**

* Must start on specific date
* Fixed duration
* Resource restrictions
* Custom validation rules

---

## 🧠 12. Observability & Debugging (Often Missing)

Advanced but crucial.

**Includes:**

* Why did task move?
* Dependency trace
* Conflict explanation

---

## 📌 If you reduce it to essentials:

The **minimum viable scheduling system** is:

1. Time model
2. Task model
3. Dependency engine
4. Scheduling engine
5. Calendar

Everything else builds on top.
