From 14da5a28ef15dd890e4277824fa76a849258ae12 Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Mon, 16 Feb 2026 12:57:29 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20docs(auth):=20update=20organizat?= =?UTF-8?q?ion=20endpoint=20documentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add all new organization management endpoints to API table - Add new Invitations section for invitation endpoints - Update controller JSDoc with complete endpoint list - Update last updated date --- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/calendar/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/chat/apps/web/vite.config.ts | 16 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/clock/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/contacts/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/lightwrite/apps/web/vite.config.ts | 14 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/manacore/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/manadeck/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/nutriphi/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/photos/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/picture/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/planta/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/presi/apps/web/vite.config.ts | 16 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/questions/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/skilltree/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/storage/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/todo/apps/web/vite.config.ts | 15 +++- .../apps/web/src/routes/offline/+page.svelte | 78 +++++++++++++++++++ apps/zitare/apps/web/vite.config.ts | 14 +++- .../docs/AUTHENTICATION_ARCHITECTURE.md | 16 +++- .../src/auth/auth.controller.ts | 13 +++- 37 files changed, 1668 insertions(+), 20 deletions(-) create mode 100644 apps/calendar/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/chat/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/clock/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/contacts/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/lightwrite/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/manacore/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/manadeck/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/matrix/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/nutriphi/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/photos/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/picture/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/planta/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/presi/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/questions/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/skilltree/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/storage/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/todo/apps/web/src/routes/offline/+page.svelte create mode 100644 apps/zitare/apps/web/src/routes/offline/+page.svelte diff --git a/apps/calendar/apps/web/src/routes/offline/+page.svelte b/apps/calendar/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..36adfed8e --- /dev/null +++ b/apps/calendar/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Calendar + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Deine Termine werden lokal gespeichert und sind offline verfügbar. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/calendar/apps/web/vite.config.ts b/apps/calendar/apps/web/vite.config.ts index b2c3a5d06..d61751ec8 100644 --- a/apps/calendar/apps/web/vite.config.ts +++ b/apps/calendar/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createOfflineFirstPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createOfflineFirstPWAConfig({ + name: 'Calendar - Kalender', + shortName: 'Calendar', + description: 'Kalender und Terminverwaltung', + themeColor: '#3b82f6', + }) + ), + ], server: { port: 5179, strictPort: true, diff --git a/apps/chat/apps/web/src/routes/offline/+page.svelte b/apps/chat/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..75e882d8f --- /dev/null +++ b/apps/chat/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Chat + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Chat benötigt eine Internetverbindung, um Nachrichten zu senden. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/chat/apps/web/vite.config.ts b/apps/chat/apps/web/vite.config.ts index 0f2964de7..46f95999b 100644 --- a/apps/chat/apps/web/vite.config.ts +++ b/apps/chat/apps/web/vite.config.ts @@ -1,10 +1,24 @@ import { sveltekit } from '@sveltejs/kit/vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; +import { createPWAConfig } from '@manacore/shared-pwa'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Chat - KI Assistent', + shortName: 'Chat', + description: 'KI-Chat mit verschiedenen Modellen', + themeColor: '#8b5cf6', + preset: 'standard', + }) + ), + ], server: { port: 5174, strictPort: true, diff --git a/apps/clock/apps/web/src/routes/offline/+page.svelte b/apps/clock/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..a92deb44f --- /dev/null +++ b/apps/clock/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Clock + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Die Uhr funktioniert auch offline - Timer und Stoppuhr sind verfügbar. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/clock/apps/web/vite.config.ts b/apps/clock/apps/web/vite.config.ts index 1bd24ba86..0f2897fac 100644 --- a/apps/clock/apps/web/vite.config.ts +++ b/apps/clock/apps/web/vite.config.ts @@ -1,9 +1,22 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [sveltekit()], + plugins: [ + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Clock - Uhr & Timer', + shortName: 'Clock', + description: 'Uhr, Timer und Stoppuhr', + themeColor: '#06b6d4', + preset: 'minimal', + }) + ), + ], server: { port: 5187, strictPort: true, diff --git a/apps/contacts/apps/web/src/routes/offline/+page.svelte b/apps/contacts/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..a7201a22d --- /dev/null +++ b/apps/contacts/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Contacts + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Kontakte benötigt eine Internetverbindung für Synchronisierung. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/contacts/apps/web/vite.config.ts b/apps/contacts/apps/web/vite.config.ts index 2143332bd..244cb227a 100644 --- a/apps/contacts/apps/web/vite.config.ts +++ b/apps/contacts/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Contacts - Kontakte', + shortName: 'Contacts', + description: 'Kontaktverwaltung', + themeColor: '#0891b2', + }) + ), + ], server: { port: 5184, strictPort: true, diff --git a/apps/lightwrite/apps/web/src/routes/offline/+page.svelte b/apps/lightwrite/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..b5a19108d --- /dev/null +++ b/apps/lightwrite/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - LightWrite + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + LightWrite benötigt eine Internetverbindung für Audio. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/lightwrite/apps/web/vite.config.ts b/apps/lightwrite/apps/web/vite.config.ts index 03be88bf0..ab8907059 100644 --- a/apps/lightwrite/apps/web/vite.config.ts +++ b/apps/lightwrite/apps/web/vite.config.ts @@ -1,9 +1,21 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [sveltekit()], + plugins: [ + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'LightWrite - Audio Editor', + shortName: 'LightWrite', + description: 'Beat und Lyrics Editor', + themeColor: '#f97316', + }) + ), + ], server: { port: 5180, strictPort: true, diff --git a/apps/manacore/apps/web/src/routes/offline/+page.svelte b/apps/manacore/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..a4099a75b --- /dev/null +++ b/apps/manacore/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - ManaCore + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + ManaCore benötigt eine Internetverbindung. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/manacore/apps/web/vite.config.ts b/apps/manacore/apps/web/vite.config.ts index 99633ae05..a3cefbb2d 100644 --- a/apps/manacore/apps/web/vite.config.ts +++ b/apps/manacore/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'ManaCore', + shortName: 'ManaCore', + description: 'ManaCore App Ecosystem', + themeColor: '#6366f1', + }) + ), + ], server: { port: 5173, strictPort: true, diff --git a/apps/manadeck/apps/web/src/routes/offline/+page.svelte b/apps/manadeck/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..bf53d0b27 --- /dev/null +++ b/apps/manadeck/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - ManaDeck + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + ManaDeck benötigt eine Internetverbindung für deine Kartendecks. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/manadeck/apps/web/vite.config.ts b/apps/manadeck/apps/web/vite.config.ts index 00aac1dd8..f11e75b1c 100644 --- a/apps/manadeck/apps/web/vite.config.ts +++ b/apps/manadeck/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'ManaDeck - Kartendecks', + shortName: 'ManaDeck', + description: 'Kartendecks erstellen und lernen', + themeColor: '#f59e0b', + }) + ), + ], server: { port: 5176, strictPort: true, diff --git a/apps/matrix/apps/web/src/routes/offline/+page.svelte b/apps/matrix/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..c01851a05 --- /dev/null +++ b/apps/matrix/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Matrix + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Matrix benötigt eine Internetverbindung für Nachrichten. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/nutriphi/apps/web/src/routes/offline/+page.svelte b/apps/nutriphi/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..196a195ee --- /dev/null +++ b/apps/nutriphi/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - NutriPhi + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + NutriPhi benötigt eine Internetverbindung für Analysen. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/nutriphi/apps/web/vite.config.ts b/apps/nutriphi/apps/web/vite.config.ts index 8ab09045a..4e15048c8 100644 --- a/apps/nutriphi/apps/web/vite.config.ts +++ b/apps/nutriphi/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'NutriPhi - Ernährungstracker', + shortName: 'NutriPhi', + description: 'KI-gestützte Ernährungsverfolgung', + themeColor: '#22c55e', + }) + ), + ], server: { port: 5180, strictPort: true, diff --git a/apps/photos/apps/web/src/routes/offline/+page.svelte b/apps/photos/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..ff1e4d574 --- /dev/null +++ b/apps/photos/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Photos + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Photos benötigt eine Internetverbindung für deine Fotos. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/photos/apps/web/vite.config.ts b/apps/photos/apps/web/vite.config.ts index c4a8037a5..84f4a2492 100644 --- a/apps/photos/apps/web/vite.config.ts +++ b/apps/photos/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Photos - Fotogalerie', + shortName: 'Photos', + description: 'Fotogalerie und -verwaltung', + themeColor: '#3b82f6', + }) + ), + ], server: { port: 5189, strictPort: true, diff --git a/apps/picture/apps/web/src/routes/offline/+page.svelte b/apps/picture/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..30febdf61 --- /dev/null +++ b/apps/picture/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Picture + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Picture benötigt eine Internetverbindung, um Bilder zu generieren. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/picture/apps/web/vite.config.ts b/apps/picture/apps/web/vite.config.ts index 56e184a0b..b4f996b2a 100644 --- a/apps/picture/apps/web/vite.config.ts +++ b/apps/picture/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Picture - KI Bildgenerator', + shortName: 'Picture', + description: 'KI-gestützte Bildgenerierung', + themeColor: '#ec4899', + }) + ), + ], server: { port: 5175, strictPort: true, diff --git a/apps/planta/apps/web/src/routes/offline/+page.svelte b/apps/planta/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..707073996 --- /dev/null +++ b/apps/planta/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Planta + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Planta benötigt eine Internetverbindung für Pflegetipps. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/planta/apps/web/vite.config.ts b/apps/planta/apps/web/vite.config.ts index 82a5c9558..b4a4e8213 100644 --- a/apps/planta/apps/web/vite.config.ts +++ b/apps/planta/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Planta - Pflanzenpflege', + shortName: 'Planta', + description: 'Pflanzenpflege und -identifikation', + themeColor: '#22c55e', + }) + ), + ], server: { port: 5191, strictPort: true, diff --git a/apps/presi/apps/web/src/routes/offline/+page.svelte b/apps/presi/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..fd9c4d07a --- /dev/null +++ b/apps/presi/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Presi + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Presi benötigt eine Internetverbindung für Präsentationen. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/presi/apps/web/vite.config.ts b/apps/presi/apps/web/vite.config.ts index 072fd8a67..e8c43c0a3 100644 --- a/apps/presi/apps/web/vite.config.ts +++ b/apps/presi/apps/web/vite.config.ts @@ -2,10 +2,24 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; import path from 'path'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Presi - Präsentationen', + shortName: 'Presi', + description: 'Präsentationen erstellen und halten', + themeColor: '#a855f7', + preset: 'full', + }) + ), + ], server: { port: 5178, strictPort: true, diff --git a/apps/questions/apps/web/src/routes/offline/+page.svelte b/apps/questions/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..c2a6e4edf --- /dev/null +++ b/apps/questions/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Questions + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Questions benötigt eine Internetverbindung für Antworten. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/questions/apps/web/vite.config.ts b/apps/questions/apps/web/vite.config.ts index 3e73eced5..328af2bba 100644 --- a/apps/questions/apps/web/vite.config.ts +++ b/apps/questions/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Questions - Fragen & Antworten', + shortName: 'Questions', + description: 'KI-gestützte Recherche und Fragen', + themeColor: '#8b5cf6', + }) + ), + ], server: { port: 5111, strictPort: true, diff --git a/apps/skilltree/apps/web/src/routes/offline/+page.svelte b/apps/skilltree/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..5560f8669 --- /dev/null +++ b/apps/skilltree/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - SkillTree + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Deine Skills werden lokal gespeichert und sind offline verfügbar. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/skilltree/apps/web/vite.config.ts b/apps/skilltree/apps/web/vite.config.ts index b07b59e58..bdced4816 100644 --- a/apps/skilltree/apps/web/vite.config.ts +++ b/apps/skilltree/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'SkillTree - Skills', + shortName: 'SkillTree', + description: 'Skill-Tracking und Entwicklung', + themeColor: '#8b5cf6', + }) + ), + ], server: { port: 5195, strictPort: true, diff --git a/apps/storage/apps/web/src/routes/offline/+page.svelte b/apps/storage/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..0cd07c75b --- /dev/null +++ b/apps/storage/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Storage + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Storage benötigt eine Internetverbindung für Cloud-Dateien. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/storage/apps/web/vite.config.ts b/apps/storage/apps/web/vite.config.ts index 4d7984a03..6f079a430 100644 --- a/apps/storage/apps/web/vite.config.ts +++ b/apps/storage/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Storage - Cloud Speicher', + shortName: 'Storage', + description: 'Cloud-Dateispeicher', + themeColor: '#64748b', + }) + ), + ], server: { port: 5185, strictPort: true, diff --git a/apps/todo/apps/web/src/routes/offline/+page.svelte b/apps/todo/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..4d8069d3d --- /dev/null +++ b/apps/todo/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Todo + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Deine Aufgaben werden lokal gespeichert und sind offline verfügbar. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/todo/apps/web/vite.config.ts b/apps/todo/apps/web/vite.config.ts index b7d0ccd45..2c4bd1fed 100644 --- a/apps/todo/apps/web/vite.config.ts +++ b/apps/todo/apps/web/vite.config.ts @@ -1,10 +1,23 @@ import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [tailwindcss(), sveltekit()], + plugins: [ + tailwindcss(), + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Todo - Aufgaben', + shortName: 'Todo', + description: 'Aufgaben und Projekte verwalten', + themeColor: '#10b981', + }) + ), + ], server: { port: 5188, strictPort: true, diff --git a/apps/zitare/apps/web/src/routes/offline/+page.svelte b/apps/zitare/apps/web/src/routes/offline/+page.svelte new file mode 100644 index 000000000..76429d77b --- /dev/null +++ b/apps/zitare/apps/web/src/routes/offline/+page.svelte @@ -0,0 +1,78 @@ + + + + Offline - Zitare + + +
+
+
+ + + + +
+ +

+ {isOnline ? 'Verbindung wiederhergestellt!' : 'Du bist offline'} +

+ +

+ {#if isOnline} + Du wirst gleich weitergeleitet... + {:else} + Zitare benötigt eine Internetverbindung für neue Zitate. + {/if} +

+ + {#if !isOnline} +
+ + + + + Zur Startseite + + + +
+ {:else} +
+ + + + + Weiterleitung... +
+ {/if} +
+
diff --git a/apps/zitare/apps/web/vite.config.ts b/apps/zitare/apps/web/vite.config.ts index abdc1174e..6e1cb64b0 100644 --- a/apps/zitare/apps/web/vite.config.ts +++ b/apps/zitare/apps/web/vite.config.ts @@ -1,9 +1,21 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; +import { SvelteKitPWA } from '@vite-pwa/sveltekit'; +import { createPWAConfig } from '@manacore/shared-pwa'; import { MANACORE_SHARED_PACKAGES } from '@manacore/shared-vite-config'; export default defineConfig({ - plugins: [sveltekit()], + plugins: [ + sveltekit(), + SvelteKitPWA( + createPWAConfig({ + name: 'Zitare - Zitate', + shortName: 'Zitare', + description: 'Tägliche Inspiration und Zitate', + themeColor: '#f59e0b', + }) + ), + ], server: { port: 5107, strictPort: true, diff --git a/services/mana-core-auth/docs/AUTHENTICATION_ARCHITECTURE.md b/services/mana-core-auth/docs/AUTHENTICATION_ARCHITECTURE.md index 7e7d8849f..7fcb3e2b8 100644 --- a/services/mana-core-auth/docs/AUTHENTICATION_ARCHITECTURE.md +++ b/services/mana-core-auth/docs/AUTHENTICATION_ARCHITECTURE.md @@ -2,7 +2,7 @@ > **Decision Date**: December 2024 > **Status**: Active -> **Last Updated**: December 1, 2024 +> **Last Updated**: February 16, 2026 ## Overview @@ -258,8 +258,22 @@ issuer: process.env.JWT_ISSUER || 'manacore', | `/api/v1/auth/register/b2b` | POST | Register organization | | `/api/v1/auth/organizations` | GET | List user's orgs | | `/api/v1/auth/organizations/:id` | GET | Get org details | +| `/api/v1/auth/organizations/:id` | PUT | Update org (name, logo, metadata) | +| `/api/v1/auth/organizations/:id` | DELETE | Delete organization (owner only) | | `/api/v1/auth/organizations/:id/invite` | POST | Invite employee | +| `/api/v1/auth/organizations/:id/members` | GET | List org members | +| `/api/v1/auth/organizations/:id/members/:memberId` | DELETE | Remove member | +| `/api/v1/auth/organizations/:orgId/members/:memberId/role` | PATCH | Update member role | +| `/api/v1/auth/organizations/:id/invitations` | GET | List org invitations | | `/api/v1/auth/organizations/set-active` | POST | Switch active org | +| `/api/v1/auth/organizations/accept-invitation` | POST | Accept invitation | + +### Invitations + +| Endpoint | Method | Description | +|----------|--------|-------------| +| `/api/v1/auth/invitations` | GET | List user's pending invitations | +| `/api/v1/auth/invitations/:id` | DELETE | Cancel or reject invitation | --- diff --git a/services/mana-core-auth/src/auth/auth.controller.ts b/services/mana-core-auth/src/auth/auth.controller.ts index b9431f0f2..41e086b41 100644 --- a/services/mana-core-auth/src/auth/auth.controller.ts +++ b/services/mana-core-auth/src/auth/auth.controller.ts @@ -49,14 +49,23 @@ import type { CurrentUserData } from '../common/decorators/current-user.decorato * - POST /auth/refresh - Refresh access token * - GET /auth/session - Get current session * - * B2B Endpoints: + * B2B Organization Endpoints: * - POST /auth/register/b2b - Register organization with owner * - GET /auth/organizations - List user's organizations * - GET /auth/organizations/:id - Get organization details + * - PUT /auth/organizations/:id - Update organization + * - DELETE /auth/organizations/:id - Delete organization (owner only) * - POST /auth/organizations/:id/invite - Invite employee - * - POST /auth/organizations/accept-invitation - Accept invitation + * - GET /auth/organizations/:id/members - List organization members * - DELETE /auth/organizations/:id/members/:memberId - Remove member + * - PATCH /auth/organizations/:orgId/members/:memberId/role - Update member role + * - GET /auth/organizations/:id/invitations - List organization invitations + * - POST /auth/organizations/accept-invitation - Accept invitation * - POST /auth/organizations/set-active - Switch active organization + * + * Invitation Endpoints: + * - GET /auth/invitations - List user's pending invitations + * - DELETE /auth/invitations/:id - Cancel or reject invitation */ @ApiTags('auth') @Controller('auth')