How is Grafana codebase organized?


I came to a conclusion that in order to achieve some of my use-case requirements (fundamental changes on some of the features/options facing the user of the dashboard), I will need to play around with the source code.
Now, I would like to attempt to do just that, since I worked before a little bit with Javascript. However, I have no clue how do I approach Grafana code base.
I would like to know what should I familiarize myself with as a starter. I am not familiar with NodeJS, Angular or Golang (but I will seek help from people who are). Which one is primary in Grafana code base? which one is back-end and which one front-end? and how is the app organized in general?


Grafana uses Golang for the backend and Angular for the frontend. It is quite a large codebase (> hundred thousand lines of code) that supports a lot of use cases (lots of data sources, lots of options, lots of panels). Unless you are planning on doing small changes (changing colors, hiding features with CSS etc.) then as a non-programmer this could be very challenging.

Forking Grafana to have your own private fork is also a lot of work. If you want to keep it up to date with new features then you will have to handle merge conflicts when you change something that has been changed in mainline Grafana.

What I’m trying to say is that I don’t think this sounds like a good idea.

Out of curiosity, what fundamental changes are you planning?

@daniellee You make a good point. I am convinced that the fact that the code base is large, makes it a big part of the problem for me, and the learning curve is just too big for this.

However, the changes I am planning include, but not limited to, adding features borrowed from other tools/apps (like reporting capabilities, PDF generation, ability to send Alerts via an SMS gateway and more) and also broad administrative functionalities like the way organizations and dashboards are viewed by different users and how user permissions to view or act on Panels are implemented.

These changes are fundamental to me (though others might see it differently) and might imply contradictions to some design choices that have been made when building Grafana from day one. I want to try to explore the Grafana code base from that perspective.
So can you please briefly explain how code base is structured/organized?

I am a small-time programmer so I have a fair understanding and knowledge of coding in general.

Thanks again

Some of features you mentioned are being worked on or have been requested:

Exist or being developed:

Has Feature Request for:

PDF generation:

I’m not sure exactly what you are looking for when you ask So can you please briefly explain how code base is structured/organized? Can you give an example of another open source project that provides this explanation?

Grafana has a similar structure to most websites - a frontend, a backend and a database. Have you looked at the code yet? Was there anything that seemed very strange?

Another option for you is to buy Enterprise Support from GrafanaLabs. It has a Roadmap Assurance option if you want to prioritize development of certain features.

How can i get a PDF format of the stat when i click a graph in grafana?