Metrics is a set of software components to collect and review software project metrics like performance, build stability, and codebase quality.
We believe Metrics will help you to monitor the quality of your project's codebase and processes. Metrics application helps developers, project teams, and organizations to monitor and improve projects' performance, stability, and quality.
The Metrics Web Application provides a beautiful and handy UI delivered by creative designers and developers. The web application is powered by Flutter making it fast and reliable. The UI visualizes the project's metrics and makes it easier to monitor metrics for different projects by providing appropriate filters.
All the data that the Metrics components orchestrate, belongs only to you: it is stored in the Cloud Firestore database as a part of your Firebase project, the logging is performed on your Sentry account, if enabled, analytics are reported to your Firebase Analytics account, and so on. Moreover, to make the components even safer, we provide a great set of Firestore Security rules for Cloud Firestore to protect the stored projects' data. The Firebase Authentication stands on the guard of the deployed web application and the stored data from insufficient access.
The Metrics software components consist of a set of tools that provide a convenient way to deploy components, synchronize project data, configure logging, and collecting analytics. Moreover, the CI Integrations Tool can be integrated into the project's CI to automate builds synchronization and provide up-to-date data to the Web Metrics Application.
Metrics Components
A CLI application that integrates with popular CI tools to collect software project metrics.
A Dart package that provides a common classes to use within Metrics applications.
A Firebase
instance that provides the Firestore, Firebase Cloud Functions services and ability to deploy the application on Firebase Hosting. Also, provides an Analytics service used to gather and store the analytics data (this service is optional and may not be configured during deployment).
Firebase Analytics is optional and may not be configured during deployment.
A Flutter Web
application that displays project metrics on easy to navigate Dashboard.
A Deploy CLI
is a command-line tool that simplifies the deployment of Metrics components (Flutter Web application, Cloud Functions, etc.)
A Dart Cloud Functions
is a serverless backend code deployed on Firebase that simplifies data managing for other Metrics components.
A Sentry
service helps to store any logs and monitor runtime errors.
Sentry is optional and may not be configured during deployment.
The Metrics components are configurable on your demand. You can always integrate the builds synchronization into your CI system or schedule this synchronization, disable or enable Sentry logging and Firebase Analytics, configure the web application authentication processes, and so on.
There are a couple of ways to install the Metrics
application:
If you prefer to install the Metrics
application automatically, follow the next steps:
- Download the
Metrics CLI
binary or build it from the source. - Run the
doctor
command to verify all required third-party CLIs are installed. - Run the
deploy
command to start deploying the Metrics Web Application. - Follow the
Metrics CLI
instructions to finish the deployment.
See Metrics CLI usage for more information.
If you want to install the Metrics
manually, you should download the source code and perform some Firebase configurations using the Firebase web UI. See Metrics Firebase deployment document to get more information about required configurations.
We've tried to document all important decisions & approaches used for the development of this project. Reading each document is not an easy task and requires some time and patience. To help you get started, we collected the most useful documents that should help you to make first steps:
Furthermore, every Metrics component requires component-specific documentation. Thus, to get started with the CI integrations
it is recommended to get familiar with the following documents:
Similarly, here is a list for the Firebase
component:
In contrast with the above components, Flutter Web
requires more steps to follow: