diff --git a/src/routes/dashboard/+page.svelte b/src/routes/dashboard/+page.svelte
new file mode 100644
index 0000000..72e799f
--- /dev/null
+++ b/src/routes/dashboard/+page.svelte
@@ -0,0 +1,51 @@
+
+
+
+
+
+ Welcome to gitKeep...
+
+
+
+ {#if activePanel === "configuration"}
+
+ {/if}
+
+
+
diff --git a/src/routes/dashboard/Config.svelte b/src/routes/dashboard/Config.svelte
new file mode 100644
index 0000000..1ac8040
--- /dev/null
+++ b/src/routes/dashboard/Config.svelte
@@ -0,0 +1,14 @@
+
+
+
+
+
diff --git a/src/routes/login/+page.server.ts b/src/routes/login/+page.server.ts
new file mode 100644
index 0000000..a6c4bb3
--- /dev/null
+++ b/src/routes/login/+page.server.ts
@@ -0,0 +1,29 @@
+ import { fail } from '@sveltejs/kit';
+ import { supabase } from '$lib/server/supabase.ts';
+ import type { Actions } from './$types';
+
+export const actions: Actions = {
+ default: async ({request, url}) =>{
+ const form = await request.formData();
+ const email = String(form.get("email") ?? "");
+ const baseUrl = url.origin;
+
+ if (!email){
+ return fail(400, {message: "Missing email"})
+ }
+ const { error } = await supabase.auth.signInWithOtp({
+ email: email,
+ options: {
+ shouldCreateUser: true,
+ emailRedirectTo: `${baseUrl}/dashboard`,
+ },
+ })
+
+ if (error){
+ return fail(400, error.message);
+ }
+
+ return {success: true}
+
+ }
+}
diff --git a/src/routes/login/+page.svelte b/src/routes/login/+page.svelte
new file mode 100644
index 0000000..d9eb671
--- /dev/null
+++ b/src/routes/login/+page.svelte
@@ -0,0 +1,19 @@
+
+
+
+
+
Login
+
Enter your email and we’ll send you a magic link.
+
+
+
+