{"id":22712023,"url":"https://github.com/buildit/synapse","last_synced_at":"2025-07-18T15:35:24.533Z","repository":{"id":78235769,"uuid":"78051638","full_name":"buildit/synapse","owner":"buildit","description":null,"archived":false,"fork":false,"pushed_at":"2018-01-04T20:49:03.000Z","size":1519,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-28T20:17:58.280Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buildit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-04T20:48:12.000Z","updated_at":"2017-01-04T21:27:49.000Z","dependencies_parsed_at":"2023-02-25T21:00:16.702Z","dependency_job_id":null,"html_url":"https://github.com/buildit/synapse","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildit%2Fsynapse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildit%2Fsynapse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildit%2Fsynapse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildit%2Fsynapse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buildit","download_url":"https://codeload.github.com/buildit/synapse/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246250082,"owners_count":20747292,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-10T13:09:07.241Z","updated_at":"2025-03-29T22:21:24.019Z","avatar_url":"https://github.com/buildit.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Synapse\n\n## Quick Start\n```\nnpm install\nnpm start\n```\nThis builds the app and runs it on a dev server at [localhost:3000](http://localhost:3000/).\n\n## What is Synapse?\nSynapse is a Management Information (MI) dashboard that provides visualizations of metrics pertaining to the development and delivery of software projects. Projects exist within the context of Programs (a related grouping of projects) and Portfolios (a related grouping of Programs). Thus Synapse is able to provide overviews across any particular level or grouping.\n\n[Video demo](https://youtu.be/jXXl9Gezxug)\n\nSynapse provides:\n\n- **Project List** - List of the projects currently being tracked. This allows you to select a particular project for viewing.  The *New* button also allows you to add a project to the list.\n\n- **Project Projection** - Typically at the beginning of a project the \"How long is this going to take\" question is asked.  The Projection allows you to project a target completion date by tweaking a set of parameters (Start Date, Target Velocity, Backlog Size, ...).  The projection is based on an S-Curve concept that allows for adjusting Velocity to support Ramp Up and Release activities.  Dark Matter allows you to set a confidence level on the currently known backlog and plan for the discovery of additional requirements.\n\n- **Project Status** - While operational systems provide a team level view one-dimensional view of a Project, they rarely provide the ability to view all of the dimensions that matter.  The Project Status page provides a graphical view of a given project's demand (scope), defects (quality), and effort (cost) over the life of the project.  This allows the user to rapidly determine if a project is or is not on track across all those dimensions.\n\nIn addition the previously created projection can be overlaid to the project's actuals to determine if the project is meeting forecast expectations.\n\n- **Project Details** - The project details view provides a set of instructions to the system.  These instructions tell the Synapse what the operational source systems are for the various dimensions, what type the system is, a how to connect to that system to extract the necessary data.  Additionally the user can control what what data is displayed and in what order.\n\nThe Demand data specifies the status that a work item might be in, and how to stack it on the graph.  Status data that exists in the source system but is not listed will be ignored.  Additionally the user can decide to group one or more status together on the graph.\n\nThe Defect data specifies the severity that a defect item might be in, and how to stack it on the graph.  Severity data that exists in the source system but is not listed will be ignored.  Additionally the user can decide to group one or more severities together on the graph.\n\nThe Effort data specifies the roles that various people fill while working on the project.    Effort role types that exists in the source system but is not listed will be ignored.  Additionally the user can decide to group one or more roles together on the graph.\n\n#### Deployments\nSynapse is currently deployed only on Buildit's VPN. If you have access to the VPN, visit Synapse at:\nStaging Environment: [Synapse Staging](http://synapse.staging.buildit.tools)\n\nProduction Environment: [Synapse Production](http://synapse.buildit.tools)\n\n### Journey of the project ([The Journey](TheJourney.md))\n\n### Getting Started (how to run it, build, deploy, test, analysis)\n#### Prereqs\nNode 6.4 or greater for NPM\n\n#### Set up\nInstall dependencies with:\n```\nnpm install\n```\n\n#### Configuration\nConfiguration for the site are specified in a series of environment variables.  These can be provided\nas all environment variables are in the shell, or directly in the command line.\n* EOLAS_DOMAIN\n* TEST_API\n* NODE_ENV\n\nIf further variables are required, they need to be added to the `webpack.DefinePlugin` configuration in\nthe `webpack.config.js` file, as webpack prevents environment variables from being directly accessible.\n\nWe can then use the variables defined in the config file in our code, using the defined name.\n\nFor example, we can refer to the node environment as `process.env.NODE_ENV`.\n\nThe api url should be constructed from the provided environment variables, but does not need to be\nconstructed manually.  There is a config helper that can be imported for this purpose.\n\n```\nimport config from 'helpers/config';\nconst apiBaseUrl = config.apiBaseUrl;\n```\n\nTo create domain dynamic values, the docker-compose.yml.template can be used to set NODE_CONFIG json value with any data that you wish to override or add in a dynamic way.\n\n#### Build\nBuild and watch for changes:\n```\nnpm start\n```\n#### Test\n##### Unit Test\n```\nnpm run test\n```\n\n##### Acceptance Test\nYou need to first have the Synapse app running and that app needs to be appropriately connected to a valid MI REST API service, such as Eolas. See \"Configure for Deployments\" below.\n```\nnpm run test:acceptance\n```\n\n#### Analysis\nCode Analysis:\n```\nnpm run lint\n```\n\n#### Version\nYou need to run the following to version and tag the application. You use 'major' to bump the versions major number, 'minor' to bump the version minor version and 'patch' to bump the version patch number.\n```\nnpm version patch -m \"SYNAPSE-XX #comment Some version related comment\"\n```\n\n#### Deploy\nWe're using a Jenkins pipeline to deploy to production.\n\n###### How to deploy the app to production\n\n- Go to the Jenkins pipeline for [Synapse production] (http://jenkins.riglet:9000/jenkins/job/synapse-prod-pipeline/)\n- Click \"Build Now\", which is on the left side of the page. This will begin the build process.\n- Hover over the middle stage -- \"Write docker-compose\". You'll be prompted to choose a \"tag\". This allows you to choose which version of the build to send out into the world. Generally, you should use \"latest\". Click \"Proceed\".\n- Watch for the build to succeed. If it does, you'll see the solid green dot at Jenkins. If not, check the Console Output on Jenkins and debug!\n\n## User Notes\n\n### Configure for Deployments\nTo run this app, you need access to the management information REST API (code name Eolas). Configuration of the base URL for the REST API is already handled in the deployment pipeline for staging and production. Running this app in a local development environment assumes the REST API service is running on localhost:6565.\n\n### Coding Standards\nOur coding standards are enforced by automated linters. (See the linting scripts in package.json and the \"\nAnalysis\" stage in our Jenkins pipeline.) We are using Code Guide's style guides for [HTML](http://codeguide.co/#html) and [CSS](http://codeguide.co/#css).\n\nOur Javascript standards are based on Airbnb's [coding standards](https://github.com/airbnb/javascript) and [linting rules](https://www.npmjs.com/package/eslint-config-airbnb). Our custom rules, which overwrite and extend Airbnb's rules, can be found in `/.eslintrc`.\n\n\n### How to Contribute\nThis project is currently an internal Buildit project and is not open to external resources. If you are an internal resource, please contact @digitalrigh to gain access to this project.\n\n### Team\n@spotted_dog\n\n[Zac Smith](https://github.com/BillyZac)\n\n@jorgesanchez2387\n\n@digitalrigh\n\n### License\n[![Apache 2](http://img.shields.io/badge/license-Apache%202-red.svg)](http://www.apache.org/licenses/LICENSE-2.0)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuildit%2Fsynapse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuildit%2Fsynapse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuildit%2Fsynapse/lists"}