diff --git a/Foxnouns.Backend/Controllers/UsersController.cs b/Foxnouns.Backend/Controllers/UsersController.cs
index 26ae497..c6101bb 100644
--- a/Foxnouns.Backend/Controllers/UsersController.cs
+++ b/Foxnouns.Backend/Controllers/UsersController.cs
@@ -1,4 +1,3 @@
-using System.Diagnostics;
using Foxnouns.Backend.Database;
using Foxnouns.Backend.Middleware;
using Foxnouns.Backend.Services;
diff --git a/Foxnouns.Backend/Database/Models/Cache.cs b/Foxnouns.Backend/Database/Models/Cache.cs
new file mode 100644
index 0000000..81d4b2b
--- /dev/null
+++ b/Foxnouns.Backend/Database/Models/Cache.cs
@@ -0,0 +1,11 @@
+using NodaTime;
+
+namespace Foxnouns.Backend.Database.Models;
+
+public class Cache
+{
+ public long Id { get; init; }
+ public required string Key { get; init; }
+ public required string Value { get; set; }
+ public Instant Expires { get; init; }
+}
\ No newline at end of file
diff --git a/Foxnouns.Frontend/package.json b/Foxnouns.Frontend/package.json
index fb3ce1f..5b9442e 100644
--- a/Foxnouns.Frontend/package.json
+++ b/Foxnouns.Frontend/package.json
@@ -12,18 +12,20 @@
"format": "prettier --write ."
},
"devDependencies": {
+ "@fontsource/firago": "^5.0.11",
"@sveltejs/adapter-node": "^5.0.1",
"@sveltejs/kit": "^2.0.0",
"@sveltejs/vite-plugin-svelte": "^3.0.0",
- "@sveltestrap/sveltestrap": "^6.2.7",
+ "@tabler/icons-svelte": "^3.5.0",
"@types/eslint": "^8.56.7",
- "bootstrap": "^5.3.3",
+ "bulma": "^1.0.1",
"eslint": "^9.0.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-svelte": "^2.36.0",
"globals": "^15.0.0",
"prettier": "^3.1.1",
"prettier-plugin-svelte": "^3.1.2",
+ "sass": "^1.77.4",
"svelte": "^4.2.7",
"svelte-check": "^3.6.0",
"tslib": "^2.4.1",
diff --git a/Foxnouns.Frontend/src/app.html b/Foxnouns.Frontend/src/app.html
index 562d998..1bf633d 100644
--- a/Foxnouns.Frontend/src/app.html
+++ b/Foxnouns.Frontend/src/app.html
@@ -6,10 +6,10 @@
%sveltekit.head%
diff --git a/Foxnouns.Frontend/src/app.scss b/Foxnouns.Frontend/src/app.scss
new file mode 100644
index 0000000..e8dcaf9
--- /dev/null
+++ b/Foxnouns.Frontend/src/app.scss
@@ -0,0 +1,7 @@
+@use "bulma/sass" with (
+ $family-primary: "FiraGO"
+);
+
+@import "@fontsource/firago/400.css";
+@import "@fontsource/firago/400-italic.css";
+@import "@fontsource/firago/700.css";
diff --git a/Foxnouns.Frontend/src/lib/nav/Dropdown.svelte b/Foxnouns.Frontend/src/lib/nav/Dropdown.svelte
new file mode 100644
index 0000000..00c70c5
--- /dev/null
+++ b/Foxnouns.Frontend/src/lib/nav/Dropdown.svelte
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
diff --git a/Foxnouns.Frontend/src/lib/nav/DropdownItem.svelte b/Foxnouns.Frontend/src/lib/nav/DropdownItem.svelte
new file mode 100644
index 0000000..be22533
--- /dev/null
+++ b/Foxnouns.Frontend/src/lib/nav/DropdownItem.svelte
@@ -0,0 +1,10 @@
+
+
+{#if divider}
+
+{:else}
+
+{/if}
diff --git a/Foxnouns.Frontend/src/lib/nav/Navbar.svelte b/Foxnouns.Frontend/src/lib/nav/Navbar.svelte
index 588bb44..7effb19 100644
--- a/Foxnouns.Frontend/src/lib/nav/Navbar.svelte
+++ b/Foxnouns.Frontend/src/lib/nav/Navbar.svelte
@@ -1,57 +1,70 @@
-
-
-
-
-
-
-