We wanted a way to put up a big screen TV in our office and have a feed of all our teams and projects github activity scroll by. From that simple idea, we thought of new ways to grow and expand the dashboard to include things like aggregated statistics for individual projects and users. We want to build this project to be flexible and configurable so that it not only suits our needs, but can serve as a platform for other organizations and teams to build a fun and informative dashboard of their work.

How it will work

Feedbag will have a server and client component. The server will be written purely in Go and compiled down to a distributable binary. The setup process will be as easy as configuring the config file to point to your database, editing the included default .tmpl files, and starting the server.

The .tmpl (template) files are the key to configuration of Feedbag. At the top of each template file, there is a comment block for configuration. This is where the name of the template is defined along with a conditional statement to define when this template will be processed and sent to the client.

We will build out a DSL which includes many/all of the github event types, variables, and aggregations available to use anywhere in the html portion of the template. With our large pool of available functions and variables, any combination can be used in the templates conditional configuration option to render that template when it is met.

Example (fun) Template Condition

name: Force Push Master Shamming
condition: push_event && branch_name == "master"

HTML to send for this condition

Challenges Ahead

Building out the DSL for the server will be the most challenging part of this project. The server will be designed in such a way that more variables and functions will be added as time goes on yielding more and more flexibility for building templates.

What's next for FeedBag

Development. Starting when the Gopher Gala starts! Wooh!

Share this project: