diff --git a/Client/.well-known/interverse b/Client/.well-known/interverse
new file mode 100644
index 0000000..a577aed
--- /dev/null
+++ b/Client/.well-known/interverse
@@ -0,0 +1,23 @@
+{
+ "version": 0.1,
+ "name": "My website",
+ "image":"",
+ "location": "https://my.website",
+ "resources": [
+ {
+ "label": "RSS Feed",
+ "icon": "",
+ "location": "https://my.website.com/rss.xml",
+ "description": "Stay up to date!"
+ }
+ ],
+ "connections": [
+ "https://libresolutions.network",
+ "https://retroedge.tech"
+ ],
+ "contact": {
+ "e-mail": "contact@https://my.website",
+ "matrix": "@me:https://my.website",
+ "fediverse": "@me@mastodon.social"
+ }
+ }
\ No newline at end of file
diff --git a/Client/helper.js b/Client/helper.js
new file mode 100644
index 0000000..059e619
--- /dev/null
+++ b/Client/helper.js
@@ -0,0 +1,37 @@
+function fetchdata(url,cback){
+ var req = new XMLHttpRequest();
+ req.open("GET",url,true);
+ req.addEventListener("load",cback);
+ req.send();
+}
+
+function logreq(event){
+ console.log("Event:")
+ console.log(event.target.response)
+}
+
+function parse_news_item(dat){
+ var item = {};
+ item.title = dat.slice(dat.search("
")+7,dat.search(""));
+ item.description = dat.slice(dat.search("")+13,dat.search(""));
+ item.url = dat.slice(dat.search("")+6,dat.search(""));;
+ item.img = dat.slice(dat.search("")+5,dat.search(""));;
+ return item;
+
+}
+
+function get_rss_list(data){
+ var items = data.split("- ").splice(1);
+ return items.map(parse_news_item).reverse();
+
+
+
+}
+
+//https://davidwalsh.name/query-string-javascript
+function getUrlParameter(name) {
+ name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
+ var regex = new RegExp('[\\?&]' + name + '=([^]*)');
+ var results = regex.exec(location.search);
+ return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
+};
\ No newline at end of file
diff --git a/Client/index.html b/Client/index.html
index e1b8a24..8ab3286 100644
--- a/Client/index.html
+++ b/Client/index.html
@@ -6,7 +6,6 @@
-
diff --git a/Client/theme.css b/Client/theme.css
new file mode 100644
index 0000000..67a55ee
--- /dev/null
+++ b/Client/theme.css
@@ -0,0 +1,86 @@
+
+body{
+ --theme-primary-color:white;
+ --theme-secondary-color:black;
+ background-color:var(--theme-primary-color);
+ color:var(--theme-secondary-color);
+ overflow-x:hidden;
+ margin:0;
+ display:flex;
+ flex-direction: column;
+ font-size:185%;
+
+}
+@media screen and (min-width:1000px) {
+ body{
+ font-size:100%;
+ }
+
+}
+table {
+ border-spacing:0;
+
+}
+
+th,td {
+ padding:0.5rem;
+ border:2px solid var(--theme-secondary-color);
+}
+
+a{
+ color:var(--theme-secondary-color)
+}
+
+
+a {
+ text-decoration: none;
+}
+
+
+
+
+.inververse{
+ display:flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+
+}
+
+#interverse-details{
+ display:flex;
+ flex-direction: row;
+ align-items: center;
+
+}
+
+#interverse-resources{
+ justify-content: space-evenly;
+ flex-wrap: wrap;
+ display:flex;
+ flex-direction: row;
+
+}
+.interverse-resource{
+}
+.interverse-resource-icon{
+ height:3rem;
+ width:3rem;
+}
+#interverse-connections{
+ display:flex;
+ flex-wrap: wrap;
+ flex-direction: row;
+ justify-content: space-evenly;
+ align-items: flex-start;
+}
+.interverse-connection{
+ width:fit-content;
+ border: 1px solid var(--theme-secondary-color);
+ padding:0.5rem;
+ margin:0.25rem;
+}
+
+.interverse-widget{
+ width:50vw;
+ height:60vh;
+}
\ No newline at end of file