DEV Community

Cover image for From Task-Centric to Resource-Aware: Rebuilding a Gantt Chart for Real Projects
Nelson Li
Nelson Li

Posted on

From Task-Centric to Resource-Aware: Rebuilding a Gantt Chart for Real Projects

Most Gantt charts look correct.

  • Tasks are scheduled.
  • Dependencies are respected.
  • Timelines appear clean.

And yet, projects still slip and teams still burn out.

After building and integrating scheduling tools in real-world systems, I kept seeing the same pattern:

Gantt charts are very good at modeling tasks —

but surprisingly bad at modeling people.

This post shares why that happens, and how I approached rebuilding a Gantt chart to be resource-aware in version 1.9.0.


The real problem: tasks don’t consume time, people do

Traditional Gantt charts answer one question extremely well:

When does this task happen?

But they struggle with a more important one:

Who is being used, how much, and at the same time?

In reality:

  • A single person often works on multiple tasks concurrently
  • Each task consumes only part of their capacity
  • Overload accumulates gradually, not discretely

When this information is hidden, schedules look correct right up until they fail.


Shifting perspective: introducing Resource View

In v1.9.0, the chart supports two explicit modes:

  • Task View — rows represent tasks (classic Gantt)
  • Resource View — rows represent resources (people, machines, workstations)
viewMode: 'task' | 'resource'
Enter fullscreen mode Exit fullscreen mode

In Resource View:

  • Each row corresponds to a resource
  • Multiple task bars may overlap in the same time window
  • Layout is calculated dynamically rather than blindly stacked

This shift doesn’t just change the UI — it changes how scheduling problems are understood.


Making resource allocation explicit

To support resource-first planning, the Task model was extended with allocation data:

resources: [
  { resourceId: 'devA', percent: 50 },
  { resourceId: 'devB', percent: 30 }
]
Enter fullscreen mode Exit fullscreen mode

Design decisions behind this model:

  • Allocation is explicit (10–100%)
  • Multiple resources per task are supported
  • Backward compatibility is preserved (defaults to 100%)

Once allocation is first-class data, the system can reason about capacity instead of assumptions.


Visualizing load instead of hiding it

Numbers alone don’t help if they’re buried in dialogs.

So allocation is visualized directly on the timeline:

  • Task bar height scales with allocation percentage
  • Percent labels are visible inline
  • Tooltips expose detailed allocation context

This makes resource pressure visible without any clicks.


Detecting overload when it actually happens

The most important feature added in v1.9.0 is overload detection.

Within the same time window:

  • Same resource
  • Multiple tasks
  • Accumulated allocation exceeds 100%

The chart highlights overload visually at the exact point it occurs.

This is where a Gantt chart stops being a passive timeline and starts acting as a decision-support tool.


Interaction parity across views

Resource View is not a read-only visualization.

All core interactions remain available:

  • Dragging tasks
  • Resizing timelines
  • Time-based adjustments

If a view affects planning decisions, it should support planning actions.


Architecture and performance considerations

To keep this scalable and maintainable:

  • Resource layout logic was extracted into independent composables
  • Rendering optimizations were expanded using memoization
  • Scroll debouncing was reintroduced to balance responsiveness and performance
  • Theme scoping was fixed at the component level to avoid global side effects

The goal was to add capability without adding architectural debt.


Closing thoughts

Good scheduling tools shouldn’t just tell us when work happens.

They should help answer a harder question:

Is this plan actually feasible for the people involved?

Making resource usage visible changes how teams reason about schedules.
v1.9.0 is a step toward more honest planning tools.

If you’re building planning, scheduling, or resource-heavy systems,
I’d love to hear how you approach resource modeling in practice.


Demo Video

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.