Skip to content

jaydeland/mirrorgate

 
 

Repository files navigation

MirrorGate

MirrorGate is a WallBoard application meant to give teams fast feedback in all the different areas related to software development.

license GitHub issues GitHub stars GitHub forks Docker Stars Docker Pulls

Why that name?

MirrorGate is meant to display relevant information on how your software looks like from every perspective, from the planning to the user’s feedback. So it's the mirror where teams can see their work reflected, helping them to perform self-criticism and continuous improvement. It aims to improve software quality and time-to-market by making the team aware of how the software it is developing and its process looks like.

That said, to be honest, it all comes from this dialog from The Never Ending Story:

  • Engywook: Next is the Magic Mirror Gate. Atreyu has to face his true self.
  • Falcor: So what? That won't be too hard for him.
  • Engywook: Oh, that's what everyone thinks! But kind people find out that they are cruel. Brave men discover that they are really cowards! Confronted by their true selves, most men run away screaming!

Functionality

Right now MirrorGate offers information on:

  • Sprint advance status and backlog refinement.
  • Program Increment (PI) advance status.
  • Incidences visualization by criticality.
  • Build status per repository.
  • Build statistics and failure tendency.
  • Marketplace feedback for mobile applications both in iTunes and PlayStore.
  • Active users from Google Analytics.
  • Alerts.
  • Slack notifications.

ScreenCatpure

We expect to be adding much more information in the near future so stay tuned.

Additionally, MirrorGate offers a backoffice application where dashboards can be configured.

Spinning up a simple local environment

To execute a simple local environment with Jira and Jenkins capabilities, please check the mirrorgate-sample-deployment project.

Architecture

In order to operate, MirrorGate requires several components:

  • Main MirrorGate application: typically executed by using the bbva-ae/mirrorgate docker container.
  • MongoDB database. Should be bound to the application by using the SPRING_DATA_MONGODB_URI environment variable (for example SPRING_DATA_MONGODB_URI=mongodb:https://localhost:27017/dashboarddb).
  • Collectors: collectors are components in charge of seeking and pushing information to the application. Currently, the following collectors exist:
    • Jenkins plugin: is a plugin that pushes information from a Jenkins CI server.
    • Jira collector: is a standalone application that polls Jira servers for changes every configurable amount of time.
    • Market collector: is a standalone process that polls smartphone applications marketplaces for user reviews.

Security

MirrorGate currently doesn't have a security layer built in. If you want to secure it, you will have to put it behind a reverse proxy such as NginX and rely on perimeter security. Ensure to propagate the authenticated user name by using the X-Forwarded-User header so that the user that makes changes in a dashboard's configuration through the backoffice can be retrieved.

Building and executing locally

Build Dependencies

You need the following dependencies installed in order to build the project:

Project Structure

Contains folders for each of the modules:

  • mirrorgate-dashboard: contains the front-end sources.
  • mirrorgate-backoffice: contains the dashboard administration application.
  • mirrorgate-api: contains the API (back-end) sources.
  • mirrorgate-core: contains the core library used by the API and the collectors.
  • docker: contains utilities to build a MirrorGate docker image.
  • tests: contains utilities to put all the pieces together and execute them as a whole while developing.

Check each of these folders for instructions on how to build, deploy and run each module.

How to execute

To execute MirrorGate locally:

  1. Ensure you have all the build dependencies installed.
  2. Clone this repository.
  3. Execute scripts/buildAndRun.sh.
  4. Wait some time until the message Tomcat started on port(s): 8080 appears.
  5. Open https://localhost:8080/mirrorgate/backoffice/index.html to access the WallBoards' backoffice.
  6. You should be able to navigate through the mock dashboards.
  7. Attempt to run some of the collectors (e.g. Jira) to be able to populate some information inside the database.

Supported browsers

In MirrorGate we use some edge HTML and CSS features, thus only latest Chrome and Firefox versions are supported at the moment (i.e. IE and Safari are not currently supported).

Contributing

Please read the contributing guide.

Credit

This project is inspired by CapitalOne's Hygieia.

About

MirrorGate DevOps Dashboard

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 41.9%
  • JavaScript 32.6%
  • HTML 15.1%
  • CSS 6.7%
  • TypeScript 2.7%
  • Groovy 0.6%
  • Shell 0.4%