Announcing My First Open Source Project: Graphkit

In this mini update, I pleased to announce my first open source project on GitHub

Before the Christmas break, I was working on my own little side project for working with graphs as part of a wider exercise to learn the Go programming language. And so, after a few months of hard work, I'm pleased to announce my first open source project called Graphkit - a simple CLI tool for visualising and converting graphs.

Check out the GitHub link below:👇

GitHub - jamesrashford/graphkit: Graphkit - the Swiss Army knife of all things graph-related. Graphkit is a simple CLI tool written in Go for processing and analysing graph-based data structures.
Graphkit - the Swiss Army knife of all things graph-related. Graphkit is a simple CLI tool written in Go for processing and analysing graph-based data structures. - jamesrashford/graphkit

Note: Graphkit is currently in alpha and is still very much under development.

What it Graphkit?

As a mentioned in the GitHub README, Graphkit is "the Swiss Army knife of all things graph-related. Graphkit is a simple CLI tool written in Go for processing and analysing graph-based data structures."

Currently, Graphkit has two main features: converting and visualising graphs. Graphkit is the pandoc of graphs. It can be used to convert between different file formats used to store and represent graph structures.

Also, with some help from D3.js, Graphkit can be used to produce interactive graphs within the browser. For now, there is no UI. You can inspect graphs with pan-zoom functionality as shown below.

Future Work

It'd fair to say that there are many features I would like to implement, however, finding the time to implement may prove to be a challenge whilst trying to juggle my day job and personal life.

That being said, here are a few things I would like to include at some point or another. A few of to include.

    • The ability to export HTML reports to embed in websites
    • Features to support the design and layout of the graph
    • To save graphs as simple PNG files. This will require me to implement a layout algorithm (e.g force layout) which may be a bit a challenge