
Project links
GanttCraft is an open-source application designed to automate the creation of Gantt charts using data already available in development management tools.
The application retrieves information from Git repository issues, including titles, descriptions, assignees and due dates, in order to automatically generate a visual representation of the project schedule.
GanttCraft supports GitHub, GitLab and self-hosted GitLab instances. Changes made to issues are reflected in the visualization to keep the project view consistent with the current state of the repository.
Problem
Planning information is often duplicated between Git issues and dedicated project management tools.
This requires maintaining several sources of information and can lead to discrepancies between the actual state of development and the displayed project schedule.
GanttCraft aims to directly reuse information already available in Git repositories in order to reduce this duplication.
How it works
The application connects to a Git provider and retrieves the required information from repository issues.
This data is then normalized and used to automatically build the Gantt chart.
The project currently supports:
- GitHub
- GitLab
- Self-hosted GitLab
Authentication with Git providers is handled through OAuth 2.0.
Repository issue data is used to represent tasks, their deadlines and their relationships within a common planning view.
Main features
- GitHub and GitLab integration
- Support for self-hosted GitLab instances
- OAuth 2.0 authentication
- Automatic Gantt chart generation from issues
- Use of assignees and due dates
- Representation of relationships between tasks
- Synchronization with repository data
- Customization of task display
Architecture and technical choices
GanttCraft is primarily developed in TypeScript using a Node.js environment.
Fastify is used on the server side to handle application interactions and integrations with Git providers.
The application uses an integration layer designed to support multiple providers without coupling its behavior specifically to GitHub or GitLab.
The interface is built with Tailwind CSS, and the different parts of the project are covered by tests using Jest.
Technical challenges
One of the main technical challenges of the project is normalizing information coming from different Git providers.
GitHub and GitLab expose similar concepts, but their APIs, authentication mechanisms and representations of issues and metadata can differ.
These different data sources therefore need to be transformed into a common model that can be used consistently by GanttCraft.
Another challenge concerns synchronization: because the source data can be modified directly within the Git provider, the generated visualization must remain consistent with the repository data.
Planned improvements
The project continues to evolve, with several improvements planned:
- implementation of pagination to overcome the current issue retrieval limits;
- support for additional Git providers;
- planned support for Bitbucket;
- planned support for Gitea;
- more advanced use of issue and milestone metadata.
Open Source
GanttCraft is distributed under the Apache 2.0 license.
The source code is publicly available on GitHub, and the project can be deployed with different Git providers depending on the environment and requirements.