{"id":22492554,"url":"https://github.com/garystafford/cd-maturity-model","last_synced_at":"2025-08-23T19:17:20.658Z","repository":{"id":26751291,"uuid":"30209095","full_name":"garystafford/cd-maturity-model","owner":"garystafford","description":"Continuous Delivery Maturity Model - Gap Analysis Visualization Tool, using D3.js","archived":false,"fork":false,"pushed_at":"2017-10-06T03:27:35.000Z","size":6633,"stargazers_count":73,"open_issues_count":0,"forks_count":37,"subscribers_count":10,"default_branch":"requirejs","last_synced_at":"2023-10-20T19:57:10.882Z","etag":null,"topics":["cd","continuous-delivery","d3","docker","iac","infrastructure","maturity-model","visualization"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/garystafford.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-02T21:16:14.000Z","updated_at":"2023-08-12T04:59:12.000Z","dependencies_parsed_at":"2022-08-30T12:31:16.981Z","dependency_job_id":null,"html_url":"https://github.com/garystafford/cd-maturity-model","commit_stats":null,"previous_names":[],"tags_count":8,"template":null,"template_full_name":null,"purl":"pkg:github/garystafford/cd-maturity-model","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garystafford%2Fcd-maturity-model","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garystafford%2Fcd-maturity-model/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garystafford%2Fcd-maturity-model/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garystafford%2Fcd-maturity-model/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/garystafford","download_url":"https://codeload.github.com/garystafford/cd-maturity-model/tar.gz/refs/heads/requirejs","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garystafford%2Fcd-maturity-model/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259860406,"owners_count":22922987,"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":["cd","continuous-delivery","d3","docker","iac","infrastructure","maturity-model","visualization"],"created_at":"2024-12-06T18:19:01.529Z","updated_at":"2025-06-14T18:08:04.682Z","avatar_url":"https://github.com/garystafford.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/garystafford/cd-maturity-model.svg?branch=requirejs)](https://travis-ci.org/garystafford/cd-maturity-model)\n\n# CD Maturity Model - Gap Analysis Visualization Tool\n\nA gap analysis visualization tool for the '[Continuous Delivery Maturity Model](https://secure.surveymonkey.com/_resources/28183/23008183/bf361750-7418-458f-85a6-6c07333e4986.png)'. Based on model from the book, '**Continuous Delivery:** _Reliable Software Releases through Build, Test, and Deployment Automation_', by Jez Humble and David Farley, available on [Amazon](http://www.amazon.com/dp/0321601912).\n\nThis JavaScript-based application displays a visual comparison, based on a radar graph, also known as a spider graph, of the six areas of practice of the CD Maturity Model, across multiple applications platforms, business units, or functional divisions within your SDLC.\n\nThe Maturity Model Gap Analysis Tool is applicable to many discipline, not only Continuous Delivery. The application is built to be fully configurable and easily adaptable, by modifying the data file (`js/data/data_radar.js`). The default data file contains a sample data set, based on a fictions financial institution's gap analysis.\n\n[![CD Maturity Model - Gap Analysis Visualization Tool](https://github.com/garystafford/cd-maturity-model/blob/requirejs/images/CD_Maturity_Model_Video.jpg)](http://www.youtube.com/watch?v=YWGNw6VvKBc \"CD Maturity Model - Gap Analysis Visualization Tool\")\n\n\u003c!-- [![CD Gap Analysis](https://github.com/garystafford/cd-maturity-model/blob/requirejs/images/CD_example_thumbnail.png?raw=true)](https://github.com/garystafford/cd-maturity-model/blob/requirejs/images/CD_example.png?raw=true) --\u003e\n\n ## Quick Start\n\nTo install this project locally, `git clone` the `requirejs` branch from [GitHub](https://github.com/garystafford/cd-maturity-model/tree/requirejs):\n\n```bash\ngit clone --branch requirejs --single-branch --depth 1 \\\n  https://github.com/garystafford/cd-maturity-model.git\ncd cd-maturity-model\n```\n\n## D3.js Data-Driven Documents\n\nThe application is a browser-based tool, which uses the [D3.js](http://d3js.org/) JavaScript library. Visualizations are rendered using JavaScript and [SVG](http://en.wikipedia.org/wiki/Scalable_Vector_Graphics).\n\n## RequireJS Optimization\n\nModule-based project uses [RequireJS](http://requirejs.org/). After making any javascript or css changes, optimize the project using [RequireJS Optimizer](http://requirejs.org/docs/optimization.html). Optimizer combines related scripts together into build layers and minifies them via [UglifyJS](https://github.com/mishoo/UglifyJS) (the default). This project requires [Node.js](http://nodejs.org).\n\n```bash\nnpm install -g requirejs\nmkdir dist/ || echo 'dist/ folder already exists...'\ncp -f js/require_2_3_5/require.min.js dist/\ncp -f favicon.png dist/\nnode build/r_2_3_5/r.js -o build/build.js\nnode build/r_2_3_5/r.js -o cssIn=css/radar.css out=dist/main-built.css\n```\n\n[![Optimizing Project](https://github.com/garystafford/cd-maturity-model/blob/requirejs/images/optimizing_thumbnail.png?raw=true)](https://github.com/garystafford/cd-maturity-model/blob/requirejs/images/optimizing.png?raw=true)\n\n## Data-Driven Visualization\n\nCurrently, the CD Maturity Model data is stored in the `js/data/data_radar.js` file, as an array of JavaScript object literals. It would be very easy to convert the project to use a data source, such as a static JSON or YAML file, or MongoDB database.\n\n```javascript\nCATEGORIES = [\n    \"Build Management and Continuous Integration\",\n    \"Environments and Deployment\",\n    \"Release Management and Compliance\",\n    \"Testing\",\n    \"Data Management\",\n    \"Configuration Management\"\n];\n\napplications = [\n    \"Core Banking Application\",\n    \"Internet Banking Application\",\n    \"Human Resources Application\",\n    \"ATM Management Application\"\n];\n\nmaturityData: [\n    [{ //Core Banking Application\n        \"app\"  : applications[0],\n        \"axis\" : CATEGORIES[0],\n        \"value\": -1\n    }, {\n        \"app\"  : applications[0],\n        \"axis\" : CATEGORIES[1],\n        \"value\": -1\n    }, {\n        \"app\"  : applications[0],\n        \"axis\" : CATEGORIES[2],\n        \"value\": 1\n    }, {\n        \"app\"  : applications[0],\n        \"axis\" : CATEGORIES[3],\n        \"value\": -1\n    }, {\n        \"app\"  : applications[0],\n        \"axis\" : CATEGORIES[4],\n        \"value\": 0\n    }, {\n        \"app\"  : applications[0],\n        \"axis\" : CATEGORIES[5],\n        \"value\": 2\n    }]\n];\n```\n\n## Hosting Project\n\nTo host this project, after optimizing, you only need the following items:\n\n- `index.html` file\n- `dist/` directory\n\n## Hosting Project on Apache with Docker\n\nThis project includes a `Dockerfile` for local development and hosting of the app, on Apache web server, in a Docker container. After running the 'RequireJS Optimization' commands above:\n\n```bash\ndocker build -t apache2 .\ndocker run -d --name cd-maturity-model -p 8082:80 apache2\n```\n\nPoint your browser to `http://localhost:8082/`\n\n## Rapid Development\n\nTo quickly rebuild and re-containerize the application, during development, run the following:\n\n```bash\nrm -rf dist/* \\\n  \u0026\u0026 cp -f js/require_2_3_5/require.min.js dist/ \\\n  \u0026\u0026 cp -f favicon.png dist/ \\\n  \u0026\u0026 node build/r_2_3_5/r.js -o build/build.js \\\n  \u0026\u0026 node build/r_2_3_5/r.js -o cssIn=css/radar.css out=dist/main-built.css \\\n  \u0026\u0026 docker rm -f cd-maturity-model \\\n  \u0026\u0026 docker build -t apache2 . \\\n  \u0026\u0026 docker run -d --name cd-maturity-model -p 8082:80 apache2\n```\n\n## Infrastructure as Code Maturity Model\n\nThis project now includes a second data file (`js/data/iac_radar.js`), based on the IaC Maturity Model. To use IaC sample data, rename the file to `data_radar.js`; it will be automatically included in the build. Alternately, change the name of data file that gets included, by modifying the `build/build.js` and `js/radar/common.js` files. The data file contains a sample data set, based on a fictions financial institution's gap analysis.\n\n[![IaC Gap Analysis](https://github.com/garystafford/cd-maturity-model/blob/requirejs/images/IaC_example_thumbnail.png?raw=true)](https://github.com/garystafford/cd-maturity-model/blob/requirejs/images/IaC_example.png?raw=true)\n\nThe CD Maturity Model can be easily adapted to the evolving [Infrastructure as Code (IaC) Maturity Model](https://programmaticponderings.com/2016/11/25/infrastructure-as-code-maturity-model/).\n\n[![IaC Maturity Model](https://github.com/garystafford/cd-maturity-model/blob/requirejs/images/IaC_Maturity_Model%20v2_1.png?raw=true)](https://github.com/garystafford/cd-maturity-model/blob/requirejs/images/IaC_Maturity_Model%20v2_1.pdf)\n\n## Helpful Links\n\n- d3 and Radar Charts\n\n  - \u003chttp://www.visualcinnamon.com/2013/09/making-d3-radar-chart-look-bit-better.html\u003e\n  - \u003chttps://gist.github.com/nbremer\u003e\n  - \u003chttps://gist.github.com/nbremer/6506614\u003e\n  - \u003chttp://bl.ocks.org/nbremer/6506614\u003e\n  - \u003chttps://github.com/alangrafu/radar-chart-d3\u003e\n  - \u003chttp://graves.cl/radar-chart-d3/\u003e\n\n- SVG Tips\n\n  - \u003chttp://www.petercollingridge.co.uk/data-visualisation/svg-mouseover-tricks\u003e\n  - \u003chttp://bl.ocks.org/aaizemberg/78bd3dade9593896a59d\u003e\n\n- RequireJS\n\n  - \u003chttps://github.com/requirejs\u003e\n  - \u003chttp://requirejs.org/docs/api.html\u003e\n  - \u003chttp://tech.pro/blog/1639/using-rjs-to-optimize-your-requirejs-project\u003e\n  - \u003chttp://www.sitepoint.com/understanding-requirejs-for-effective-javascript-module-loading/\u003e\n  - \u003chttps://github.com/volojs/create-template\u003e\n  - \u003chttp://www.ringabell.org/en/un-simple-guide-pour-debuter-avec-requirejs/\u003e\n\n- Javascript Tips and Patterns (Module pattern)\n\n  - \u003chttp://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript\u003e\n  - \u003chttp://www.xenoveritas.org/blog/xeno/the-correct-way-to-clone-javascript-arrays\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgarystafford%2Fcd-maturity-model","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgarystafford%2Fcd-maturity-model","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgarystafford%2Fcd-maturity-model/lists"}