diff --git a/sg-backend/db.py b/sg-backend/db.py
index 7fd09f9c8e96078d1214422c597b3ce95622d2bd..f5a1c7b67b66b1e0d2f9031fba66b4fd0466cf06 100644
--- a/sg-backend/db.py
+++ b/sg-backend/db.py
@@ -50,4 +50,15 @@ class Neo4j:
                 return [node for node in data[0]['p'] if type(node) is dict]
                 # [node._properties.get('name') for node in results.graph().nodes]
             else:
-                return []
\ No newline at end of file
+                return []
+
+    def get_relations(self):
+        with self.driver.session() as session:
+            results = session.run("MATCH p = (a)-[r]->(b) RETURN a.name as source,b.name as target, r as relation_type")
+            return results.data()
+
+    def get_nodes(self):
+        with self.driver.session() as session:
+            results = session.run("MATCH (a) return Id(a) as key, a.name as name")
+            return results.data()
+
diff --git a/sg-backend/main.py b/sg-backend/main.py
index a26bc68a709c971951e0536a0873430a44ada222..756d205f2bdcccce171bf83328864ce39a8f398c 100644
--- a/sg-backend/main.py
+++ b/sg-backend/main.py
@@ -1,5 +1,6 @@
 import json
 import os
+import random
 
 from fastapi import FastAPI
 from pydantic import BaseModel
@@ -51,8 +52,42 @@ async def software():
     return {"softwares": json.loads(json.dumps(results))}
 
 
+@app.get("/software-graph")
+async def software():
+    nodes = driver.get_nodes()
+    jnodes = json.loads(json.dumps(nodes))
+    relations = driver.get_relations()
+    jrelations = json.loads(json.dumps(relations))
+
+    jsondata = {"nodes": jnodes, "edges": jrelations}
+
+    def findNodeIdWithName(nodes, name):
+        for node in nodes:
+            if node["name"] == name:
+                return node["key"]
+        return 0
+
+    for idx, relation in enumerate(jsondata["edges"]):
+        relation['key'] = str(idx)
+        relation['attributes'] = {}
+        relation['attributes']['label'] = relation['relation_type'][1]
+        relation['source'] = findNodeIdWithName(jsondata["nodes"], relation["source"])
+        relation['target'] = findNodeIdWithName(jsondata["nodes"], relation["target"])
+        del relation['relation_type']
+
+    for node in jsondata["nodes"]:
+        node['attributes'] = {}
+        node['attributes']['label'] = node['name']
+        node['attributes']['x'] = random.random()
+        node['attributes']['y'] = random.random()
+        node['attributes']['size'] = 22
+        del node['name']
+
+    return jsondata
+
+
 @app.post("/software-search")
 async def software_search(search: SoftwareSearch):
     print(search.software1, search.software2)
     res = driver.get_softwares_shortest_path(search)
-    return {"softwares": res}
\ No newline at end of file
+    return {"softwares": res}