diff --git a/apps/website/src/assets/boxicons/bx-buy-me-a-coffee.svg b/apps/website/src/assets/boxicons/bx-buy-me-a-coffee.svg
new file mode 100644
index 000000000..5e105e2f7
--- /dev/null
+++ b/apps/website/src/assets/boxicons/bx-buy-me-a-coffee.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/website/src/assets/boxicons/bx-github.svg b/apps/website/src/assets/boxicons/bx-github.svg
new file mode 100644
index 000000000..d027cc0db
--- /dev/null
+++ b/apps/website/src/assets/boxicons/bx-github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/website/src/assets/boxicons/bx-paypal.svg b/apps/website/src/assets/boxicons/bx-paypal.svg
new file mode 100644
index 000000000..e4f3db18c
--- /dev/null
+++ b/apps/website/src/assets/boxicons/bx-paypal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/website/src/components/Button.css b/apps/website/src/components/Button.css
new file mode 100644
index 000000000..8c3355fcf
--- /dev/null
+++ b/apps/website/src/components/Button.css
@@ -0,0 +1,9 @@
+a.button {
+ display: block;
+ background: var(--brand-1);
+ padding: 0.5em 1em;
+ border-radius: 6px;
+ color: var(--brand-foreground-color);
+ text-decoration: none;
+ text-align: center;
+}
\ No newline at end of file
diff --git a/apps/website/src/components/Button.tsx b/apps/website/src/components/Button.tsx
new file mode 100644
index 000000000..9874e8aee
--- /dev/null
+++ b/apps/website/src/components/Button.tsx
@@ -0,0 +1,23 @@
+import { ComponentChildren } from "preact";
+import Icon from "./Icon";
+import "./Button.css";
+
+interface ButtonProps {
+ href?: string;
+ iconSvg?: string;
+ text: ComponentChildren;
+ openExternally?: boolean;
+}
+
+export default function Button({ href, iconSvg, openExternally, text }: ButtonProps) {
+ return (
+
+ {iconSvg && <>
Consider supporting the main developer of the application via: