{"id":17553903,"url":"https://github.com/lyes-sefiane/multi-element-relationally-interconnected-topology","last_synced_at":"2026-01-18T10:23:14.168Z","repository":{"id":65328772,"uuid":"581612038","full_name":"lyes-sefiane/multi-element-relationally-interconnected-topology","owner":"lyes-sefiane","description":"The Microservices NextGen 🇩🇿 🇨🇦 ","archived":false,"fork":false,"pushed_at":"2025-01-27T20:12:16.000Z","size":797,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-03T22:52:46.975Z","etag":null,"topics":["apache-avro","apache-kafka","apache-zookeeper","bootstrap5","confluent-schema-registry","consul","flyway","java-17","kafdrop","mongodb","postgresql","redis-cluster","spring-boot","spring-cloud-gateway","spring-data","spring-graphql","spring-kafka","spring-mvc","spring-webflux","thymeleaf-template-engine"],"latest_commit_sha":null,"homepage":"https://lyes-sefiane.web.app","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lyes-sefiane.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2022-12-23T18:00:25.000Z","updated_at":"2024-11-06T06:09:05.000Z","dependencies_parsed_at":"2024-03-06T02:46:28.766Z","dependency_job_id":"100de6c1-24f3-4182-a928-65071124693c","html_url":"https://github.com/lyes-sefiane/multi-element-relationally-interconnected-topology","commit_stats":null,"previous_names":["lyes-sefiane/multi-element-relationally-interconnected-topology","lyes-s/multi-element-relationally-interconnected-topology"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyes-sefiane%2Fmulti-element-relationally-interconnected-topology","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyes-sefiane%2Fmulti-element-relationally-interconnected-topology/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyes-sefiane%2Fmulti-element-relationally-interconnected-topology/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lyes-sefiane%2Fmulti-element-relationally-interconnected-topology/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lyes-sefiane","download_url":"https://codeload.github.com/lyes-sefiane/multi-element-relationally-interconnected-topology/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246162104,"owners_count":20733351,"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":["apache-avro","apache-kafka","apache-zookeeper","bootstrap5","confluent-schema-registry","consul","flyway","java-17","kafdrop","mongodb","postgresql","redis-cluster","spring-boot","spring-cloud-gateway","spring-data","spring-graphql","spring-kafka","spring-mvc","spring-webflux","thymeleaf-template-engine"],"created_at":"2024-10-21T06:43:57.528Z","updated_at":"2026-01-18T10:23:14.140Z","avatar_url":"https://github.com/lyes-sefiane.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multi-Element Relationally Interconnected Topology\u003c/br\u003e\n\n### Copyright © Lyes SEFIANE. All Rights Reserved | [CC BY-NC-ND 4.0](https://creativecommons.org/licenses/by-nc-nd/4.0/)\n\n[![CC BY-NC-ND 4.0][cc-by-nc-nd-image]][cc-by-nc-nd]\n\n[cc-by-nc-nd]: http://creativecommons.org/licenses/by-nc-nd/4.0/\n[cc-by-nc-nd-image]: https://licensebuttons.net/l/by-nc-nd/4.0/88x31.png\n[cc-by-nc-nd-shield]: https://img.shields.io/badge/License-CC%20BY--NC--ND%204.0-lightgrey.svg\n\n# GitHub Badges\n\n![License](https://img.shields.io/static/v1?label=License\u0026message=CC-BY-NC-ND-4.0\u0026color=green)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md)\n[![Dependabot Updates](https://github.com/lyes-sefiane/multi-element-relationally-interconnected-topology/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/lyes-sefiane/multi-element-relationally-interconnected-topology/actions/workflows/dependabot/dependabot-updates)\n[![CodeQL](https://github.com/lyes-sefiane/multi-element-relationally-interconnected-topology/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/lyes-sefiane/multi-element-relationally-interconnected-topology/actions/workflows/github-code-scanning/codeql)\n[![Automatic Dependency Submission](https://github.com/lyes-sefiane/multi-element-relationally-interconnected-topology/actions/workflows/dependency-graph/auto-submission/badge.svg)](https://github.com/lyes-sefiane/multi-element-relationally-interconnected-topology/actions/workflows/dependency-graph/auto-submission)\n![GitHub Repo stars](https://img.shields.io/github/stars/lyes-sefiane/multi-element-relationally-interconnected-topology?style=social)\n![GitHub top language](https://img.shields.io/github/languages/top/lyes-sefiane/multi-element-relationally-interconnected-topology)\n\n\n# Infrastructure\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/lyes-sefiane/multi-element-relationally-interconnected-topology/images/The-MERIT-v8.PNG\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n# User Interface\n\n\u003e URL : http://localhost:4200\n\n## Index\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/lyes-sefiane/multi-element-relationally-interconnected-topology/images/index-v2.PNG\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n## Network Elements\n\n### Retrieve All Network Elements\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/lyes-sefiane/multi-element-relationally-interconnected-topology/images/network-elements-v2.PNG\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n### Edit a Network Element\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/lyes-sefiane/multi-element-relationally-interconnected-topology/images/edit-network-elements-v2.PNG\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n## Network Graph\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/lyes-sefiane/multi-element-relationally-interconnected-topology/images/network-graph.PNG\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\n# Wiki\n\n* [M.E.R.I.T : The Multi-Element Relationally Interconnected Topology Wiki !](https://github.com/lyes-sefiane/multi-element-relationally-interconnected-topology/wiki)\n\n# OpenAPI/Swagger\n\n\u003e Network Elements : https://app.swaggerhub.com/apis-docs/lyes-sefiane/network-elements/1.0\n\n\u003e Network Graph : https://app.swaggerhub.com/apis-docs/lyes-sefiane/network-graph/1.0\n\n\n# Requirements\n```\n1. Java 17.x.y\n\n2. Maven 3.x.y\n\n3. Docker 3.x.y\n```\n\n# Git Clone\n\n```java\ngit clone https://github.com/lyes-sefiane/multi-element-relationally-interconnected-topology.git\n```\n\n# M.E.R.I.T : The Script\n\n```java\nmitsuke ( ◥◣_◢◤ ) : ~$ cd multi-element-relationally-interconnected-topology/\n\nmitsuke ( ◥◣_◢◤ ) : ~$ chmod +x the-merit-script\n\nmitsuke ( ◥◣_◢◤ ) : ~$ ./the-merit-script\n\n\n     ████████╗██╗  ██╗███████╗    ███╗   ███╗   ███████╗   ██████╗    ██╗████████╗\n     ╚══██╔══╝██║  ██║██╔════╝    ████╗ ████║   ██╔════╝   ██╔══██╗   ██║╚══██╔══╝\n        ██║   ███████║█████╗      ██╔████╔██║   █████╗     ██████╔╝   ██║   ██║\n        ██║   ██╔══██║██╔══╝      ██║╚██╔╝██║   ██╔══╝     ██╔══██╗   ██║   ██║\n        ██║   ██║  ██║███████╗    ██║ ╚═╝ ██║██╗███████╗██╗██║  ██║██╗██║██╗██║\n        ╚═╝   ╚═╝  ╚═╝╚══════╝    ╚═╝     ╚═╝╚═╝╚══════╝╚═╝╚═╝  ╚═╝╚═╝╚═╝╚═╝╚═╝\n\n        mitsuke ( ◥◣_◢◤ ) : Hi 😊 ! please make a selection.\n\n        1) Docker Compose Up\n        2) Docker Compose Down\n        3) quit\n        #? 1\n        Docker Compose Up ...\n        Creating network \"docker-compose_network-elements\" with the default driver\n        Creating network \"docker-compose_redis\" with the default driver\n        Creating network \"docker-compose_network-graph\" with the default driver\n        Creating network \"docker-compose_consul\" with the default driver\n        Creating network \"docker-compose_kafka\" with the default driver\n        Creating network \"docker-compose_schema-registry\" with the default driver\n        Creating network \"docker-compose_gateway\" with the default driver\n        Creating network \"docker-compose_ui\" with the default driver\n        Creating volume \"docker-compose_redis-cluster_data-0\" with default driver\n        Creating volume \"docker-compose_redis-cluster_data-1\" with default driver\n        Creating volume \"docker-compose_redis-cluster_data-2\" with default driver\n        Creating volume \"docker-compose_redis-cluster_data-3\" with default driver\n        Creating volume \"docker-compose_redis-cluster_data-4\" with default driver\n        Creating volume \"docker-compose_redis-cluster_data-5\" with default driver\n        Creating volume \"docker-compose_pgdata\" with default driver\n        Creating volume \"docker-compose_mongodb-data\" with default driver\n        Creating network-elements-db ... done\n        Creating zookeeper           ... done\n        Creating redis-node-4        ... done\n        Creating mongodb             ... done\n        Creating consul-server       ... done\n        Creating redis-node-3        ... done\n        Creating redis-node-0        ... done\n        Creating redis-node-2        ... done\n        Creating redis-node-1        ... done\n        Creating flyway              ... done\n        Creating mongo-express       ... done\n        Creating kafka3              ... done\n        Creating kafka2              ... done\n        Creating consul-client       ... done\n        Creating kafka1              ... done\n        Creating redis-node-5        ... done\n        Creating kafdrop             ... done\n        Creating schema-registry     ... done\n        Creating network-graph       ... done\n        Creating network-elements    ... done\n        Creating api-gateway         ... done\n        Creating network-ui          ... done\n```\n\n# REST API\n\n## Network Element\n\n```java\ncurl -H 'Content-Type: application/json' http://localhost:8080/api/v1/devices\n\n[\n    {\n        \"address\": \"10.133.13.12\",\n        \"elementType\": \"router\",\n        \"area\": 0,\n        \"neighbors\": [\n            {\n                \"address\": \"10.133.13.13\",\n                \"cost\": 2\n            },\n            {\n                \"address\": \"10.133.13.14\",\n                \"cost\": 3\n            },\n            {\n                \"address\": \"10.133.13.15\",\n                \"cost\": 1\n            }\n        ],\n        \"edges\": [\n            {\n                \"rel\": \"self\",\n                \"href\": \"http://8e5eace76bac:8080/api/v1/devices/10.133.13.12\"\n            }\n        ]\n    },\n    {\n        \"address\": \"10.133.13.13\",\n        \"elementType\": \"server\",\n        \"area\": 0,\n        \"neighbors\": [],\n        \"edges\": [\n            {\n                \"rel\": \"self\",\n                \"href\": \"http://8e5eace76bac:8080/api/v1/devices/10.133.13.13\"\n            }\n        ]\n    },\n    {\n        \"address\": \"10.133.13.14\",\n        \"elementType\": \"wireless router\",\n        \"area\": 0,\n        \"neighbors\": [\n            {\n                \"address\": \"10.133.13.16\",\n                \"cost\": 5\n            }\n        ],\n        \"edges\": [\n            {\n                \"rel\": \"self\",\n                \"href\": \"http://8e5eace76bac:8080/api/v1/devices/10.133.13.14\"\n            }\n        ]\n    },\n    {\n        \"address\": \"10.133.13.15\",\n        \"elementType\": \"switch\",\n        \"area\": 0,\n        \"neighbors\": [\n            {\n                \"address\": \"10.133.13.17\",\n                \"cost\": 4\n            },\n            {\n                \"address\": \"10.133.13.18\",\n                \"cost\": 4\n            },\n            {\n                \"address\": \"10.133.13.19\",\n                \"cost\": 4\n            }\n        ],\n        \"edges\": [\n            {\n                \"rel\": \"self\",\n                \"href\": \"http://8e5eace76bac:8080/api/v1/devices/10.133.13.15\"\n            }\n        ]\n    },\n    {\n        \"address\": \"10.133.13.16\",\n        \"elementType\": \"laptop\",\n        \"area\": 0,\n        \"neighbors\": [],\n        \"edges\": [\n            {\n                \"rel\": \"self\",\n                \"href\": \"http://8e5eace76bac:8080/api/v1/devices/10.133.13.16\"\n            }\n        ]\n    },\n    {\n        \"address\": \"10.133.13.17\",\n        \"elementType\": \"desktop computer\",\n        \"area\": 0,\n        \"neighbors\": [\n            {\n                \"address\": \"10.133.13.18\",\n                \"cost\": 0\n            },\n            {\n                \"address\": \"10.133.13.19\",\n                \"cost\": 0\n            }\n        ],\n        \"edges\": [\n            {\n                \"rel\": \"self\",\n                \"href\": \"http://8e5eace76bac:8080/api/v1/devices/10.133.13.17\"\n            }\n        ]\n    },\n    {\n        \"address\": \"10.133.13.18\",\n        \"elementType\": \"desktop computer\",\n        \"area\": 0,\n        \"neighbors\": [\n            {\n                \"address\": \"10.133.13.19\",\n                \"cost\": 0\n            }\n        ],\n        \"edges\": [\n            {\n                \"rel\": \"self\",\n                \"href\": \"http://8e5eace76bac:8080/api/v1/devices/10.133.13.18\"\n            }\n        ]\n    },\n    {\n        \"address\": \"10.133.13.19\",\n        \"elementType\": \"desktop computer\",\n        \"area\": 0,\n        \"neighbors\": [],\n        \"edges\": [\n            {\n                \"rel\": \"self\",\n                \"href\": \"http://8e5eace76bac:8080/api/v1/devices/10.133.13.19\"\n            }\n        ]\n    }\n]\n```\n# GraphQL API\n\n## Network Graph\n\n```java\ncurl -X POST -H 'Content-Type: application/json' http://localhost:8080/api/graphql -d '{ \"query\": \"{ retrieveGraph { nodes { id area elementType} links { source target cost} } }\" }'\n\n{\n   \"data\": {\n      \"retrieveGraph\": {\n          \"nodes\": [\n            {\n                \"id\": \"10.133.13.12\",\n                \"area\": 0,\n                \"elementType\": \"router\"\n            },\n            {\n                \"id\": \"10.133.13.13\",\n                \"area\": 0,\n                \"elementType\": \"server\"\n            },\n            {\n                \"id\": \"10.133.13.14\",\n                \"area\": 0,\n                \"elementType\": \"wireless router\"\n            },\n            {\n                \"id\": \"10.133.13.15\",\n                \"area\": 0,\n                \"elementType\": \"switch\"\n            },\n            {\n                \"id\": \"10.133.13.16\",\n                \"area\": 0,\n                \"elementType\": \"laptop\"\n            },\n            {\n                \"id\": \"10.133.13.17\",\n                \"area\": 0,\n                \"elementType\": \"desktop computer\"\n            },\n            {\n                \"id\": \"10.133.13.18\",\n                \"area\": 0,\n                \"elementType\": \"desktop computer\"\n            },\n            {\n                \"id\": \"10.133.13.19\",\n                \"area\": 0,\n                \"elementType\": \"desktop computer\"\n            }\n        ],\n        \"links\": [\n            {\n                \"source\": \"10.133.13.15\",\n                \"target\": \"10.133.13.17\",\n                \"cost\": 4\n            },\n            {\n                \"source\": \"10.133.13.12\",\n                \"target\": \"10.133.13.14\",\n                \"cost\": 3\n            },\n            {\n                \"source\": \"10.133.13.12\",\n                \"target\": \"10.133.13.13\",\n                \"cost\": 2\n            },\n            {\n                \"source\": \"10.133.13.15\",\n                \"target\": \"10.133.13.18\",\n                \"cost\": 4\n            },\n            {\n                \"source\": \"10.133.13.14\",\n                \"target\": \"10.133.13.16\",\n                \"cost\": 5\n            },\n            {\n                \"source\": \"10.133.13.12\",\n                \"target\": \"10.133.13.15\",\n                \"cost\": 1\n            },\n            {\n                \"source\": \"10.133.13.17\",\n                \"target\": \"10.133.13.19\",\n                \"cost\": 0\n            },\n            {\n                \"source\": \"10.133.13.15\",\n                \"target\": \"10.133.13.19\",\n                \"cost\": 4\n            },\n            {\n                \"source\": \"10.133.13.17\",\n                \"target\": \"10.133.13.18\",\n                \"cost\": 0\n            },\n            {\n                \"source\": \"10.133.13.18\",\n                \"target\": \"10.133.13.19\",\n                \"cost\": 0\n            }\n        ]\n      }\n   }\n}\n```\n\n# Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\nPlease make sure to update tests as appropriate.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flyes-sefiane%2Fmulti-element-relationally-interconnected-topology","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flyes-sefiane%2Fmulti-element-relationally-interconnected-topology","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flyes-sefiane%2Fmulti-element-relationally-interconnected-topology/lists"}