Verano means summer in Spanish. Verano is also a project management package written in Go. I wrote it as a way to understand how Primavera - the O.G. project management software - works. Also, adding activities in Primavera is pretty annoying, since you have to add them one by one. So, one of the cool features of this package is that you can import activities in xlsx, csv, and json formats. For context, I was mainly using Primavera during my civil engineering project management classes.
The design of this package is not very complicated. At the highest level, an activity is represented by the following struct:
|
|
Then, there a few different sub-packages that do different things:
- verano/db:
- stores and update activities in an SQLite database.
- verano/parser:
- parses a slice of activities to JSON, CSV, and XLSX formats, and vice-versa.
- It can also export activities to an SQLite database.
- verano/sorter
- sorts activities based on their relationships with other activities.
- it also sorts activities based on other parameters, such as duration, start date, etc.
- it uses a topological sorting algorithm on a directed acyclic graph through the heimdalr/dag package.
- verano/project
- computes the total cost of the project.
- computes the start and finish times of activities (assuming start to finish relationships between activities) after they get toplogically sorted.
- verano/graph
- uses the graphviz package to generate a graphical representation and timeline of the activities of the project.
Additionally, there is a CLI tool - veranocli - that can be used to interact with the program. See it in action:
|
|
And here is the generated graph
the picture is pretty unreadable, so you might want to open it another tab and zoom in.
Now of course, this piece of software is missing a lot of essential features, such as support of multiple relationships types between actvities (Start to Start, Finish to Start…). Also, there’s no way to generate a Gantt chart of the project, which is literally one of the most important features of a project management program. Another missing feature is the implementation of human resources tools.
Finally, I don’t know if i’ll keep working on this project as it is really time consuming and complex…🗿
Thanks for your time !