diff --git a/README.md b/README.md
index ec84d97..3e960c6 100644
--- a/README.md
+++ b/README.md
@@ -19,8 +19,9 @@ Drop uses a utility package called droplet that's written in Rust. It has builts
Steps:
1. Copy the `.env.example` to `.env` and add your GiantBomb metadata key (more metadata providers coming)
-2. Open up a terminal and navigate to `dev-tools`, and run `docker compose up`
-3. Open up a terminal in the root directory of the project and run `yarn` and then `yarn dev` to start the dev server
+2. Create the `.data` directory with `mkdir .data`
+3. Open up a terminal and navigate to `dev-tools`, and run `docker compose up`
+4. Open up a terminal in the root directory of the project and run `yarn` and then `yarn dev` to start the dev server
To create an account:
Head over to the `/register` page. It's currently a temporary development form for creating a username + password log in.
diff --git a/components/HeaderUserWidget.vue b/components/HeaderUserWidget.vue
index eb827a0..073181c 100644
--- a/components/HeaderUserWidget.vue
+++ b/components/HeaderUserWidget.vue
@@ -1,67 +1,88 @@
-
\ No newline at end of file
+ }
+ : undefined,
+ {
+ label: "Account settings",
+ route: "/account",
+ prefix: "",
+ },
+ {
+ label: "Sign out",
+ route: "/signout",
+ prefix: "",
+ },
+].filter((e) => e !== undefined);
+
diff --git a/composables/current-page-engine.ts b/composables/current-page-engine.ts
new file mode 100644
index 0000000..6142949
--- /dev/null
+++ b/composables/current-page-engine.ts
@@ -0,0 +1,28 @@
+import type { RouteLocationNormalized } from "vue-router";
+import type { NavigationItem } from "./types";
+
+export const useCurrentNavigationIndex = (navigation: Array) => {
+ const router = useRouter();
+ const route = useRoute();
+
+ const currentNavigation = ref(-1);
+
+ function calculateCurrentNavIndex(to: RouteLocationNormalized) {
+ const validOptions = navigation
+ .map((e, i) => ({ ...e, index: i }))
+ .filter((e) => to.fullPath.startsWith(e.prefix));
+ const bestOption = validOptions
+ .sort((a, b) => b.route.length - a.route.length)
+ .at(0);
+
+ return bestOption?.index ?? -1;
+ }
+
+ currentNavigation.value = calculateCurrentNavIndex(route);
+
+ router.afterEach((to) => {
+ currentNavigation.value = calculateCurrentNavIndex(to);
+ });
+
+ return currentNavigation;
+};
diff --git a/layouts/admin.vue b/layouts/admin.vue
index ba53413..5a08267 100644
--- a/layouts/admin.vue
+++ b/layouts/admin.vue
@@ -1,2 +1,112 @@
-
\ No newline at end of file
+