diff --git a/apps/skilltree/apps/web/package.json b/apps/skilltree/apps/web/package.json
index bb75b9e17..983577a65 100644
--- a/apps/skilltree/apps/web/package.json
+++ b/apps/skilltree/apps/web/package.json
@@ -32,6 +32,9 @@
},
"dependencies": {
"@manacore/shared-auth": "workspace:*",
+ "@manacore/shared-auth-ui": "workspace:*",
+ "@manacore/shared-branding": "workspace:*",
+ "@manacore/shared-i18n": "workspace:*",
"@manacore/shared-icons": "workspace:*",
"@manacore/shared-tailwind": "workspace:*",
"@manacore/shared-theme": "workspace:*",
diff --git a/apps/skilltree/apps/web/src/routes/(auth)/forgot-password/+page.svelte b/apps/skilltree/apps/web/src/routes/(auth)/forgot-password/+page.svelte
new file mode 100644
index 000000000..890659b5c
--- /dev/null
+++ b/apps/skilltree/apps/web/src/routes/(auth)/forgot-password/+page.svelte
@@ -0,0 +1,30 @@
+
+
+
+ {translations.titleForm} | SkillTree
+
+
+
diff --git a/apps/skilltree/apps/web/src/routes/(auth)/login/+page.svelte b/apps/skilltree/apps/web/src/routes/(auth)/login/+page.svelte
new file mode 100644
index 000000000..b7bfce2c1
--- /dev/null
+++ b/apps/skilltree/apps/web/src/routes/(auth)/login/+page.svelte
@@ -0,0 +1,64 @@
+
+
+
+ {translations.title} | SkillTree
+
+
+
diff --git a/apps/skilltree/apps/web/src/routes/(auth)/register/+page.svelte b/apps/skilltree/apps/web/src/routes/(auth)/register/+page.svelte
new file mode 100644
index 000000000..fb574eedd
--- /dev/null
+++ b/apps/skilltree/apps/web/src/routes/(auth)/register/+page.svelte
@@ -0,0 +1,44 @@
+
+
+
+ {translations.title} | SkillTree
+
+
+
diff --git a/apps/skilltree/apps/web/src/routes/+layout.svelte b/apps/skilltree/apps/web/src/routes/+layout.svelte
index a4e23339c..5b68950b5 100644
--- a/apps/skilltree/apps/web/src/routes/+layout.svelte
+++ b/apps/skilltree/apps/web/src/routes/+layout.svelte
@@ -2,13 +2,14 @@
import '../app.css';
import { onMount } from 'svelte';
import { skillStore } from '$lib/stores/skills.svelte';
+ import { authStore } from '$lib/stores/auth.svelte';
let { children } = $props();
let loading = $state(true);
onMount(async () => {
- await skillStore.initialize();
+ await Promise.all([authStore.initialize(), skillStore.initialize()]);
loading = false;
});
diff --git a/packages/shared-branding/src/config.ts b/packages/shared-branding/src/config.ts
index f887053a6..3a523acb4 100644
--- a/packages/shared-branding/src/config.ts
+++ b/packages/shared-branding/src/config.ts
@@ -233,6 +233,19 @@ export const APP_BRANDING: Record = {
logoStroke: true,
logoStrokeWidth: 1.5,
},
+ skilltree: {
+ id: 'skilltree',
+ name: 'SkillTree',
+ tagline: 'Level Up Your Life',
+ primaryColor: '#10b981',
+ secondaryColor: '#34d399',
+ // Tree/branch icon representing skill progression
+ logoPath:
+ 'M12 3v1.5M12 21v-1.5M12 9a3 3 0 100-6 3 3 0 000 6zm0 0v3m0 6a3 3 0 100-6 3 3 0 000 6zm-6-3h1.5m10.5 0h1.5M6 12a3 3 0 100-6 3 3 0 000 6zm0 0h3m6 0h3m-3 0a3 3 0 100-6 3 3 0 000 6z',
+ logoViewBox: '0 0 24 24',
+ logoStroke: true,
+ logoStrokeWidth: 1.5,
+ },
};
/**
diff --git a/packages/shared-branding/src/index.ts b/packages/shared-branding/src/index.ts
index 5338cae9d..d04cc36f4 100644
--- a/packages/shared-branding/src/index.ts
+++ b/packages/shared-branding/src/index.ts
@@ -32,6 +32,7 @@ export {
InventoryLogo,
ClockLogo,
QuestionsLogo,
+ SkillTreeLogo,
} from './logos';
// Configuration
diff --git a/packages/shared-branding/src/logos/SkillTreeLogo.svelte b/packages/shared-branding/src/logos/SkillTreeLogo.svelte
new file mode 100644
index 000000000..b17be839f
--- /dev/null
+++ b/packages/shared-branding/src/logos/SkillTreeLogo.svelte
@@ -0,0 +1,13 @@
+
+
+
diff --git a/packages/shared-branding/src/logos/index.ts b/packages/shared-branding/src/logos/index.ts
index 6dc45069f..94abe41b3 100644
--- a/packages/shared-branding/src/logos/index.ts
+++ b/packages/shared-branding/src/logos/index.ts
@@ -19,3 +19,4 @@ export { default as MoodlitLogo } from './MoodlitLogo.svelte';
export { default as InventoryLogo } from './InventoryLogo.svelte';
export { default as ClockLogo } from './ClockLogo.svelte';
export { default as QuestionsLogo } from './QuestionsLogo.svelte';
+export { default as SkillTreeLogo } from './SkillTreeLogo.svelte';
diff --git a/packages/shared-branding/src/types.ts b/packages/shared-branding/src/types.ts
index ce19459be..4c53070f4 100644
--- a/packages/shared-branding/src/types.ts
+++ b/packages/shared-branding/src/types.ts
@@ -19,7 +19,8 @@ export type AppId =
| 'mail'
| 'moodlit'
| 'inventory'
- | 'questions';
+ | 'questions'
+ | 'skilltree';
/**
* App branding configuration
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 84e26db83..b8b63f7c1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -3691,6 +3691,15 @@ importers:
'@manacore/shared-auth':
specifier: workspace:*
version: link:../../../../packages/shared-auth
+ '@manacore/shared-auth-ui':
+ specifier: workspace:*
+ version: link:../../../../packages/shared-auth-ui
+ '@manacore/shared-branding':
+ specifier: workspace:*
+ version: link:../../../../packages/shared-branding
+ '@manacore/shared-i18n':
+ specifier: workspace:*
+ version: link:../../../../packages/shared-i18n
'@manacore/shared-icons':
specifier: workspace:*
version: link:../../../../packages/shared-icons