{"id":26763716,"url":"https://github.com/dreamyguy/gitinsight","last_synced_at":"2025-04-15T11:48:02.781Z","repository":{"id":2663162,"uuid":"44390102","full_name":"dreamyguy/gitinsight","owner":"dreamyguy","description":"📊 👁 🧘 Visualise your git log in new and exciting ways!","archived":false,"fork":false,"pushed_at":"2023-01-06T20:55:24.000Z","size":27455,"stargazers_count":19,"open_issues_count":28,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-06T22:47:06.858Z","etag":null,"topics":["git","git-log","gitlogg","react","repository-mining","repository-utilities","visualisation"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dreamyguy.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-10-16T14:24:56.000Z","updated_at":"2022-06-02T06:25:10.000Z","dependencies_parsed_at":"2023-01-11T16:11:38.324Z","dependency_job_id":null,"html_url":"https://github.com/dreamyguy/gitinsight","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamyguy%2Fgitinsight","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamyguy%2Fgitinsight/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamyguy%2Fgitinsight/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamyguy%2Fgitinsight/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dreamyguy","download_url":"https://codeload.github.com/dreamyguy/gitinsight/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249066049,"owners_count":21207392,"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":["git","git-log","gitlogg","react","repository-mining","repository-utilities","visualisation"],"created_at":"2025-03-28T19:34:34.793Z","updated_at":"2025-04-15T11:48:02.759Z","avatar_url":"https://github.com/dreamyguy.png","language":"JavaScript","readme":"![Gitinsight](https://github.com/dreamyguy/gitinsight/blob/master/frontend/public/img/docs/gitinsight-icon-github.png \"Visualise your git log in new and exciting ways\")\n\n\u003e 👁 Visualise your git log in new and exciting ways!\n\n[![Node Version](https://img.shields.io/badge/node-v14.12.0-blue.svg)](https://github.com/nodejs/node/releases/tag/v14.12.0) [![MIT Licence](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/dreamyguy/gitinsight/blob/master/LICENSE) [![Data generated by Gitlogg](https://img.shields.io/badge/data_generated_by-gitlogg-89336e.svg)](https://github.com/dreamyguy/gitlogg)\n\nThis project is a natural sequel to [Gitlogg][6], a project that parses the `git log` of multiple repositories into `JSON`. The idea is to help organizations visualize their data in ways that help them understand what lies behind their codebase. **Gitinsight** is therefore an extension of [Gitlogg][6], showcasing how useful the latter can be. 🔮\n\nHaving said that...\n\n\u003e 👉 **Gitinsight** is _nothing_ without a `gitlogg.json` file!\n\nThis is the most important aspect of **Gitinsight**, and there's no way around it. All the logic around retrieving and rendering the data is intrinsically connected to the data structure present on `gitlogg.json`, which is the output of [Gitlogg][6].\n\n## Getting started\n\n**0. Generate a `gitlogg.json` with [Gitlogg][6]**.\n\n...and place it under:\n\n```\nbackend/server/json/gitlogg.json\n```\n\n\u003e 👉 For the curious, I've included a sample `gitlogg.json` so that one can try it without having generated their on `JSON` file.\n\nAt the time of this writing, I have yet to make a slight modification to the `JSON` generated by [Gitlogg][6].\n\n`JSON Server` expects the following format:\n\n```\n{\n  \"commits\": [\n    {\"repository\":\"gitinsight\",\"commit_nr\":1, ...},\n    {\"repository\":\"gitinsight\",\"commit_nr\":2, ...},\n  ]\n}\n```\n\nWhile [Gitlogg][6] currently outputs _(because of the no longer used [Gitlogg API][7])_:\n\n```\n[\n  {\"repository\":\"gitinsight\",\"commit_nr\":1, ...},\n  {\"repository\":\"gitinsight\",\"commit_nr\":2, ...},\n]\n```\n\nUntil I have made that change to [Gitlogg][6] output, add these to `gitlogg.json`:\n\n- `{ \"commits\": ` to the beginning.\n- `} ` to the end.\n\n_I'll remove this notice once that's no longer necessary._\n\n**1. Use the correct `node` version!**\n\nFor better compatibility tracking, this project requires a minimal version of `node`. The version below is specified under `package.json` \u003e `engines` \u003e `node` on the [package.json](https://github.com/dreamyguy/gitinsight/blob/master/package.json) file and on [.nvmrc](https://github.com/dreamyguy/gitinsight/blob/master/.nvmrc) file.\n\nUse [`nvm`](https://github.com/nvm-sh/nvm) to set the version. Install [`nvm`](https://github.com/nvm-sh/nvm) if you don't already have it (install instructions available on their [Github page](https://github.com/nvm-sh/nvm)).\n\n    nvm install v14.12.0\n\nIf you already have that version installed:\n\n    nvm use v14.12.0\n\nThe `npm` version gets automatically set when setting the expected `node` version through `nvm`.\n\n**2. Don't skip point 1**\n\n**3. Install dependencies**\n\nGiven that you are at the project's root, run:\n\n    npm run setup\n\nThat will install all necessary dependencies for both **_frontend_** and **_backend_**.\n\n## Running it\n\n**Gitinsight** requires different apps running simultaneously. You'll be running 3 separate terminal windows:\n\n**1. JSON Server**\n\nNavigate to the `backend/` folder and run:\n\n    npm run server:json\n\nThat will start the `JSON Server` on `http://localhost:3000`. The endpoint we'll be using will be at `http://localhost:3000/commits`.\n\n**2. GraphQL Server**\n\nNavigate to the `backend/` folder and run:\n\n    npm run server:graphql\n\nThat will start the `GraphQL Server` on `http://localhost:4000/graphql`.\n\n**3. React Application**\n\nNavigate to the `frontend/` folder and run:\n\n    npm run start\n\nThat will start the `React Application` on `http://localhost:7777`.\n\nAll these tasks have their own watch, that's triggered upon relevant file changes.\n\nAll available scripts are defined on the `script` part of [package.json](./package.json).\n\n## Development\n\n**1. Install plugins for `eslint` and `prettier` on your IDE** (VS Code, Atom, Sublime, etc)\n\nTo ensure all developers are on the \"same page\" when it comes to code formatting, we reinforce certain rules. It's therefore important that plugins for `eslint` and `prettier` are installed on your IDE of choice.\n\nThese are the plugins I use on VS Code:\n\n- Prettier: `esbenp.prettier-vscode`\n- ESLint: `dbaeumer.vscode-eslint`\n\n**2. Unit testing**\n\nNavigate to the `frontend/` folder and run:\n\n    npm run test\n\nThat will start the test suite ([Jest](https://jestjs.io)), which will test _utilities_.\n\n_Utilities_ are pure functions that lift the complexity out of the files in which they are used. They require specific input, through pre-defined parameters, and provide specific output - whilst failing gracefully.\n\n## Good to know\n\nThis project ~~relies on~~ used to rely on [Gitlogg API][7] to render data, but on version [v3.0.0](https://github.com/dreamyguy/gitinsight/tree/v3.0.0) I've moved from `MongoDB` to `JSON Server` combined with `GraphQL` on the **_backend_** and `GraphQL` combined with `Apollo Client` on the **_frontend_**.\n\nAccessing data locally (as originally done until version [v1.0.3](https://github.com/dreamyguy/gitinsight/tree/v1.0.3)) would hit a wall as browsers only cache a limited amount of data. It was also important to outsource the _massaging_ of the data to a dedicated service, as too many operations had to be made to show even the simplest output. Now these operations are done at the `GraphQL` level, which in turn are cached by the `Apollo Client`. `JSON Server` simply serves the `gitlogg.json` output, which is generated by [Gitlogg][6].\n\nThe move to `JSON Server` was done for the sake of simplicity. For serving _ridiculously big data_ one might be better off running `MongoDB`, but be warned that data size will bring your machine to its knees, and even though one can use [Gitlogg API][7] _(a `RESTful API` based on `ExpressJS` and `MongoDB`)_, further optimization might be required. I managed to run a 2.5GB dataset.\n\n## License\n\nFree to use AS IS as long as you stick to the [MIT license](LICENSE).\n\n## Release History\n\n- 2020-12-30 [v3.0.0](https://github.com/dreamyguy/gitinsight/tree/v3.0.0) - [View Changes](https://github.com/dreamyguy/gitinsight/compare/v2.0.0...v3.0.0)\n\n  - Another total overhaul, for science! ✨ 🎉\n  - Better separation of concerns (_backend_ \u0026 _frontend_)\n  - Introduction of `GraphQL`\n  - Introduction of `Apollo Client`\n  - Modernization of `React` implementation\n  - All styling by `Tailwind`\n  - All new _dashboard_ looks!\n  - `ESLint` + `Prettier`\n  - _So. Much. More._\n\n- 2018-04-08 [v2.0.0](https://github.com/dreamyguy/gitinsight/tree/v2.0.0) - [View Changes](https://github.com/dreamyguy/gitinsight/compare/v1.0.3...v2.0.0)\n  - Total overhaul! ✨ 🎉\n  - Introduction of `React`\n  - Use of an API as data source (through [gitlogg-api](https://github.com/dreamyguy/gitlogg-api)) instead of accessing local data, which was costly and not scalable.\n  - Unit testing\n  - Travis CI\n- 2016-06-02 [v1.0.3](https://github.com/dreamyguy/gitinsight/tree/v1.0.3) - [View Changes](https://github.com/dreamyguy/gitinsight/compare/gitinsight-1.0.2...v1.0.3)\n  - Significant changes in every aspect, laying the ground for the React stack\n- 2015-11-30 [v1.0.2](https://github.com/dreamyguy/gitinsight/tree/gitinsight-1.0.2) - [View Changes](https://github.com/dreamyguy/gitinsight/compare/gitinsight-1.0.1...gitinsight-1.0.2)\n  - The first visualisation, based on local data\n- 2015-11-30 [v1.0.1](https://github.com/dreamyguy/gitinsight/tree/gitinsight-1.0.1)\n  - Bare minimal Gulp setup, no functionality yet\n\n# About\n\n**Gitinsight** was put together by [Wallace Sidhrée][1]. 👨‍💻🇳🇴\n\n[1]: http://sidhree.com\n[2]: http://gulpjs.com/\n[4]: http://nodejs.org/\n[6]: https://github.com/dreamyguy/gitlogg\n[7]: https://github.com/dreamyguy/gitlogg-api\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreamyguy%2Fgitinsight","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdreamyguy%2Fgitinsight","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreamyguy%2Fgitinsight/lists"}