A while ago, I wanted to build a data aggregation service that’d allow its users to fetch data from a set of data sources defined by them. I wanted to allow the users to configure the data fetch interval for each source. This led to the birth of the Dashboard project.
Dashboard is a data aggregating web application that provides a way to customize and display the aggregated data. It’s an open source project. The code is hosted on GitHub.
- Webhook support to receive data
- Fetch data from various sources at different intervals
- Plugin support to enable extensibility
Dashboard can be used to display any arbitrary updates from various sources. Some specific use cases of Dashboard can be –
- Keeping track of health of endpoints
- Display data received from Git hooks
- Monitor blogs for updates
The possibilities are endless.
The application backend is written in Go. For this use case, Go fits perfectly well and I really like Go. The current implementation of frontend is in vanilla JS (I feel primitive just saying that 😜). However, I do plan on using Vue or Preact.
For details regarding the future of the project and more, please check out the README file of the project.
Before I started working on this project, I made sure I focused on 3 things:
- Data parsing/display
Every time I took a decision around a particular feature implementation, I went through this list to ensure none of these aspects were sacrificed.
Simplicity: I wanted to make the app very simple to setup, configure, and use. I put in a lot of emphasis on the simplicity of the application. There is no database. The installation is pretty straight forward. Just download the binary file and run it. Thank you, Go!
Extensibility: I made sure to allow users to write their own plugins. These plugins are shareable. Users can display data from whichever source they want to via these plugins.
Data parsing/display: Once we fetch the data from a source, we need to have control over which parts of it we want to display in the UI. The user should be able to display only the data that matters. Right now, this is static. But, I’m working on a solution to allow users to map data.
The project is under development and is still in Alpha stage. I plan on working on it in my free time. Any contribution to the project is welcome.
As always, I’ve open sourced the project under the standard MIT license. GitHub: https://github.com/mohnish/dashboard.
Hope you like my project. Feel free to contribute to the project. Cheers! 🍺