← Back to Projects

Gantt Chart Utility

A lightweight Gantt chart generator built to solve roadmap visibility gaps in Autotask - evolving from Excel macros to a fully client-side web app.

PythonJavaScriptWebAutomation

Why I Built It

I needed a way to visualize project timelines across multiple initiatives.

The team I work with uses Autotask for project tracking, but it lacks even basic Gantt chart functionality across projects. That made it difficult to:

  • understand timelines at a glance
  • identify overlaps and dependencies
  • communicate roadmap status clearly

In short, I had data-but no usable view of it.


The Iterations (What Didn’t Work First)

Attempt 1: Excel + VBA

My first attempt was exporting project data and building a Gantt chart in Excel using VBA macros.

This worked… to a point.

But I ran into consistent friction:

  • formatting limitations
  • difficulty aligning visuals cleanly
  • awkward scaling across time ranges
  • poor export options (especially for sharing as an image)

It solved the problem temporarily, but it wasn’t something I wanted to maintain or rely on.

You can see the source code for this in the “GanttChartCreator_ExcelMacro” folder in my GitHub repo linked at the top of this post.

Attempt 2: Python Script

Next, I built a Python utility to:

  • read structured project data (CSV)
  • generate a clean Gantt chart visualization
  • give me more control over layout and rendering

This solved most of the technical limitations from Excel:

  • better control over formatting
  • more predictable output
  • easier iteration

But it introduced a new problem:

Not everyone can (or wants to) run a Python script.

Which meant the tool wasn’t accessible to some of the people who actually needed it.

You can see the source code for this in the “GanttChartCreator_Python” folder in my GitHub repo linked at the top of this post.


Final Approach: Client-Side Web App

The final version was a shift in thinking:

Instead of a tool I run, build a tool anyone can use.

So I turned it into a client-side web app.

How It Works

  • Users upload or paste structured project data
  • The app parses and renders a Gantt chart in the browser
  • Everything runs locally - no backend required

This approach:

  • removed the need for Python
  • made it accessible to non-technical users
  • allowed for easy sharing and iteration

The source code for this is not currently publicly accessible, as it is part of my main website’s repo. I may move it to a separate repo in the future, and if so, I will update this post.


Design Goals

The goal wasn’t to build a full project management tool.

It was to:

  • visualize timelines clearly
  • support roadmap conversations
  • stay lightweight and fast
  • avoid unnecessary complexity

This kept the scope focused and the tool usable.


What I Learned

1. The Tool Is Not the System

Autotask had the data.
Excel had the flexibility.
Python had the power.

But none of them solved the actual problem:

Clear, usable visibility into timelines.

The solution came from combining ideas-not relying on one tool.

2. Accessibility Matters More Than Capability

The Python version was technically better.

But the web version was actually usable.

That tradeoff shows up everywhere:

The best solution isn’t the most powerful one-it’s the one people can use.

3. Iteration > Planning

This wasn’t designed upfront.

It evolved:

  • Autotask → Excel → Python → Web

Each step revealed the next constraint.

4. Systems Thinking Applies Everywhere

This wasn’t just a visualization problem.

It was a system problem:

  • data source (Autotask)
  • transformation (CSV / structure)
  • processing (Python / JS)
  • presentation (Gantt chart)

Fixing the system mattered more than optimizing any single piece.


Where It Could Go Next

There’s plenty of room to expand this if needed:

  • dependency visualization
  • filtering by team / project group
  • saved views
  • integration with source systems

But for now, it solves the core problem:

Turning scattered project data into a clear, shareable timeline.

Live Demo

Try it here: https://www.chelseagrindstaff.com/utilities/gantt/