The Dev Manager Project is a tool designed to help development managers track the performance of their developers by collecting data from Slack, JIRA, and Gitlab.
This project provides an easy-to-use dashboard that displays key metrics related to the developers' work such as the number of pull requests, commits, and comments made, as well as the number of tickets assigned and completed.
With the help of this tool, managers can easily identify bottlenecks and areas of improvement for their team. It allows managers to drill down into the details of individual developers, identify their strengths and weaknesses, and provide them with targeted feedback and support.
First, you can configure your API settings by running the interactive setup:
make setupYou can generate a new report by running:
make runYou can visualize the web UI by running:
make websequenceDiagram participant DevManager participant ReportService participant Gitlab participant Jira participant Slack DevManager->>ReportService: Generate report Note right of DevManager: Start generating <br/>report ReportService->>Gitlab: Fetch data loop Gitlab report Gitlab->>Gitlab: Analyse MRs Gitlab->>Gitlab: Analyse Code reviews end Gitlab-->>ReportService: Data ReportService->>Jira: Fetch data loop Jira report Jira->>Jira: Analyse assigned tickets end Jira-->>ReportService: Data ReportService->>Slack: Fetch data loop Slack report Slack->>Slack: Analyse messages sent end Slack-->>ReportService: Data ReportService-->>DevManager: Report Note right of DevManager: Save data in<br/>a json file This is the current architecture, where I generate the showcase data and webpage offline.
classDiagram Backend --|> Report : Generate Backend : ruby Backend : generateReport() Backend : getDataGitlab() Backend : getDataJira() Backend : getDataSlack() Report : jsonData Frontend <|-- Report : Read file Frontend : vue.js Frontend : renderWebpage() Frontend --|> Dist : Build Dist : HTML, CSS, Javascript Github Pages --|> Dist : Read Github Pages : serverless Github Pages : updatePage() If it was supposed to be dynamic and handle real users, we could have this instead:
classDiagram BackendCore --|> Report : Generate BackendCore : ruby BackendCore : cloud server BackendCore : generateReport() BackendCore : getDataGitlab() BackendCore : getDataJira() BackendCore : getDataSlack() Report : jsonData BackendServer <|-- Report BackendServer --|> BackendCore : generateReport() BackendServer : Rails BackendServer : cloud server BackendServer : getReport() FrontendServer <|-- BackendServer : report FrontendServer --|> BackendServer : getReport() FrontendServer : vue.js FrontendServer : cloud server FrontendServer : renderWebpage() FrontendServer --|> User FrontendServer <|-- User 
