diff --git a/src/lib/Card/CardInner.svelte b/src/lib/Card/CardInner.svelte
new file mode 100644
index 0000000..844bbac
--- /dev/null
+++ b/src/lib/Card/CardInner.svelte
@@ -0,0 +1,67 @@
+
+
+
+
+ {#if icon}
+
+
+
+ {/if}
+
+
+ {title}
+
+ {#if position}
+ - {position}
+ {/if}
+
+
+ {#if description}
+
{description}
+ {/if}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/Card/CardOuter.svelte b/src/lib/Card/CardOuter.svelte
new file mode 100644
index 0000000..156e94c
--- /dev/null
+++ b/src/lib/Card/CardOuter.svelte
@@ -0,0 +1,12 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/Card/Link.svelte b/src/lib/Card/Link.svelte
new file mode 100644
index 0000000..abf8c61
--- /dev/null
+++ b/src/lib/Card/Link.svelte
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/Card/LinksOuter.svelte b/src/lib/Card/LinksOuter.svelte
new file mode 100644
index 0000000..33f7293
--- /dev/null
+++ b/src/lib/Card/LinksOuter.svelte
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/Card/index.ts b/src/lib/Card/index.ts
new file mode 100644
index 0000000..5ab1061
--- /dev/null
+++ b/src/lib/Card/index.ts
@@ -0,0 +1,4 @@
+export { default as CardOuter } from "./CardOuter.svelte";
+export { default as CardInner } from "./CardInner.svelte";
+export { default as LinksOuter } from "./LinksOuter.svelte";
+export { default as Link } from "./Link.svelte";
diff --git a/src/lib/Instances.json b/src/lib/Instances.json
new file mode 100644
index 0000000..73dbb1e
--- /dev/null
+++ b/src/lib/Instances.json
@@ -0,0 +1,112 @@
+[
+ {
+ "name": "Invidious",
+ "description": "A frontend for YouTube.",
+ "website": "https://invidious.projectsegfau.lt/",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/invidious-colored-vector.svg",
+ "category": "Instances"
+ },
+ {
+ "name": "Libreddit",
+ "description": "A frontend for Reddit.",
+ "website": "https://libreddit.projectsegfau.lt/",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/libreddit.png",
+ "category": "Instances"
+ },
+ {
+ "name": "Librarian (LBRY)",
+ "description": "A frontend for Odysee.",
+ "website": "https://lbry.projectsegfau.lt/",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/lbry.jpg",
+ "category": "Instances"
+ },
+ {
+ "name": "Nitter",
+ "description": "A frontend for Twitter.",
+ "website": "https://nitter.projectsegfau.lt/",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/nitter.png",
+ "category": "Instances"
+ },
+ {
+ "name": "Quetre",
+ "description": "A frontend for Quora.",
+ "website": "https://quetre.projectsegfau.lt/",
+ "category": "Instances"
+ },
+ {
+ "name": "Element",
+ "description": "An alternative for Discord.",
+ "website": "https://chat.projectsegfau.lt/",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/matrix.png",
+ "category": "Instances"
+ },
+ {
+ "name": "Piped",
+ "description": "Another alternative for YouTube.",
+ "website": "https://piped.projectsegfau.lt/",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/piped.svg",
+ "category": "Instances"
+ },
+ {
+ "name": "SearXNG",
+ "description": "A private meta-search engine.",
+ "website": "https://search.projectsegfau.lt/search",
+ "icon": "https://docs.searxng.org/_static/searxng-wordmark.svg",
+ "category": "Instances"
+ },
+ {
+ "name": "Lingva Translate",
+ "description": "A frontend for Google Translate.",
+ "website": "https://translate.projectsegfau.lt",
+ "icon": "https://github.com/thedaviddelta/lingva-translate/raw/main/public/logo.svg",
+ "category": "Instances"
+ },
+ {
+ "name": "Bibliogram",
+ "description": "A frontend for Instagram.",
+ "website": "https://bib.projectsegfau.lt",
+ "category": "Instances"
+ },
+ {
+ "name": "Minecraft",
+ "description": "Our invite-only Minecraft SMP.",
+ "website": "https://projectsegfau.lt/minecraft",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/minecraft.png",
+ "category": "Gameservers"
+ },
+ {
+ "name": "Minetest",
+ "description": "Minecraft \"alternative\".",
+ "website": "https://matrix.to/#/#minetest:projectsegfau.lt",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/1024px-Minetest_logo.svg.png",
+ "category": "Gameservers"
+ },
+ {
+ "name": "Portainer (Soleil Levant)",
+ "description": "A frontend for Google Translate.",
+ "website": "https://portainer.soleil-levant.projectsegfau.lt/",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/docker.svg",
+ "category": "Internal"
+ },
+ {
+ "name": "Portainer (Helios)",
+ "description": "A frontend for Instagram.",
+ "website": "https://portainer.projectsegfau.lt/",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/docker.svg",
+ "category": "Internal"
+ },
+ {
+ "name": "mailcow",
+ "description": "Our invite-only Minecraft SMP.",
+ "website": "https://mail.projectsegfau.lt/",
+ "icon": "https://instances.projectsegfau.lt/assets/icons/custom/cow_mailcow.svg",
+ "category": "Internal"
+ },
+ {
+ "name": "Plausible analytics",
+ "description": "Minecraft \"alternative\".",
+ "website": "https://analytics.projectsegfau.lt/projectsegfau.lt",
+ "icon": "https://avatars.githubusercontent.com/u/54802774?s=200&v=4",
+ "category": "Internal"
+ }
+]
diff --git a/src/lib/Nav.svelte b/src/lib/Nav.svelte
index 9e0d6ec..486998d 100644
--- a/src/lib/Nav.svelte
+++ b/src/lib/Nav.svelte
@@ -8,7 +8,7 @@
$: currentPage = $page.url.pathname;
const menus = [
- {name: "Instances", url: "https://instances.projectsegfau.lt/"},
+ {name: "Instances", url: "/instances"},
{name: "Projects", url: "/projects"},
{name: "Minecraft", url: "/minecraft"},
{name: "Donate", url: "/donate"},
diff --git a/src/routes/instances.svelte b/src/routes/instances.svelte
new file mode 100644
index 0000000..165b1e1
--- /dev/null
+++ b/src/routes/instances.svelte
@@ -0,0 +1,52 @@
+
+
+Our instances
+
+
+ {#each groups as group}
+
+
{group.category}
+
+ {#each group.values as item }
+
+
+
+
+
+
+
+ {/each}
+
+
+ {/each}
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/projects.svelte b/src/routes/projects.svelte
index 888a9b0..a91ab33 100644
--- a/src/routes/projects.svelte
+++ b/src/routes/projects.svelte
@@ -1,7 +1,7 @@