♻️ refactor: migrate 15 web apps to @manacore/shared-vite-config

- Add missing packages to MANACORE_SHARED_PACKAGES list
- Migrate all SvelteKit apps to use createViteConfig/mergeViteConfig
- Matrix preserves special WASM config for matrix-js-sdk crypto
- Update consolidation docs with completed Vite config task

Savings: ~350 LOC (-318 net lines)
This commit is contained in:
Till-JS 2026-01-29 16:47:55 +01:00
parent d0d2855adb
commit 188290b427
17 changed files with 225 additions and 513 deletions

View file

@ -1,45 +1,15 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5179,
strictPort: true,
},
ssr: {
noExternal: [
'@calendar/shared',
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-subscription-ui',
],
},
optimizeDeps: {
exclude: [
'@calendar/shared',
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-subscription-ui',
],
},
const baseConfig = createViteConfig({
port: 5179,
additionalPackages: ['@calendar/shared'],
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -1,36 +1,15 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [sveltekit(), tailwindcss()],
server: {
port: 5174,
strictPort: true,
},
ssr: {
noExternal: [
'marked',
'@manacore/shared-theme',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-ui',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-types',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-ui',
],
},
optimizeDeps: {
exclude: [
'@manacore/shared-theme',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-ui',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-types',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-ui',
],
},
const baseConfig = createViteConfig({
port: 5174,
additionalPackages: ['marked'],
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -1,34 +1,13 @@
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [sveltekit()],
server: {
port: 5187,
strictPort: true,
},
ssr: {
noExternal: [
'@manacore/shared-theme',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-ui',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-types',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-ui',
],
},
optimizeDeps: {
exclude: [
'@manacore/shared-theme',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-ui',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-types',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-ui',
],
},
const baseConfig = createViteConfig({
port: 5187,
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [sveltekit()],
})
);

View file

@ -1,59 +1,14 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5184,
strictPort: true,
},
ssr: {
noExternal: [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-subscription-ui',
'@manacore/shared-utils',
'@manacore/shared-splitscreen',
'@manacore/shared-i18n',
'@manacore/shared-profile-ui',
'@manacore/shared-tags',
'@manacore/shared-help-types',
'@manacore/shared-help-content',
'@manacore/shared-help-ui',
],
},
optimizeDeps: {
exclude: [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-subscription-ui',
'@manacore/shared-utils',
'@manacore/shared-splitscreen',
'@manacore/shared-i18n',
'@manacore/shared-profile-ui',
'@manacore/shared-tags',
'@manacore/shared-help-types',
'@manacore/shared-help-content',
'@manacore/shared-help-ui',
],
},
const baseConfig = createViteConfig({
port: 5184,
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -1,45 +1,18 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [sveltekit(), tailwindcss()],
server: {
port: 5173,
strictPort: true,
},
preview: {
port: 4173,
strictPort: true,
},
ssr: {
noExternal: [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
],
},
optimizeDeps: {
exclude: [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
],
},
const baseConfig = createViteConfig({
port: 5173,
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
preview: {
port: 4173,
strictPort: true,
},
})
);

View file

@ -1,31 +1,14 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [sveltekit(), tailwindcss()],
server: {
port: 5176,
strictPort: true,
},
ssr: {
noExternal: [
'@manacore/shared-theme',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-ui',
'@manacore/shared-theme-ui',
'@manacore/shared-i18n',
],
},
optimizeDeps: {
exclude: [
'@manacore/shared-theme',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-ui',
'@manacore/shared-theme-ui',
'@manacore/shared-i18n',
],
},
const baseConfig = createViteConfig({
port: 5176,
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -1,38 +1,41 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5180,
strictPort: true,
headers: {
// Required for WASM module loading
'Cross-Origin-Opener-Policy': 'same-origin',
'Cross-Origin-Embedder-Policy': 'require-corp',
},
},
define: {
global: 'globalThis',
},
optimizeDeps: {
include: ['buffer', 'events'],
// WASM modules cannot be pre-bundled
exclude: ['@matrix-org/matrix-sdk-crypto-wasm'],
esbuildOptions: {
define: {
global: 'globalThis',
const baseConfig = createViteConfig({
port: 5180,
additionalPackages: ['@matrix/shared'],
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
server: {
headers: {
// Required for WASM module loading
'Cross-Origin-Opener-Policy': 'same-origin',
'Cross-Origin-Embedder-Policy': 'require-corp',
},
},
},
ssr: {
noExternal: ['@manacore/shared-*', '@matrix/shared'],
},
worker: {
format: 'es',
},
build: {
target: 'esnext',
},
});
define: {
global: 'globalThis',
},
optimizeDeps: {
include: ['buffer', 'events'],
// WASM modules cannot be pre-bundled
exclude: ['@matrix-org/matrix-sdk-crypto-wasm'],
esbuildOptions: {
define: {
global: 'globalThis',
},
},
},
worker: {
format: 'es',
},
build: {
target: 'esnext',
},
})
);

View file

@ -1,47 +1,15 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5180,
strictPort: true,
},
ssr: {
noExternal: [
'@nutriphi/shared',
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-subscription-ui',
'@manacore/shared-i18n',
],
},
optimizeDeps: {
exclude: [
'@nutriphi/shared',
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-subscription-ui',
'@manacore/shared-i18n',
],
},
const baseConfig = createViteConfig({
port: 5180,
additionalPackages: ['@nutriphi/shared'],
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -1,15 +1,14 @@
import tailwindcss from '@tailwindcss/vite';
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5175,
strictPort: true,
},
ssr: {
// Process @manacore packages that contain .svelte.ts files with runes
noExternal: ['@manacore/shared-theme', '@manacore/shared-auth'],
},
const baseConfig = createViteConfig({
port: 5175,
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -1,37 +1,15 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5191,
strictPort: true,
},
ssr: {
noExternal: [
'@planta/shared',
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
],
},
optimizeDeps: {
exclude: [
'@planta/shared',
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
],
},
const baseConfig = createViteConfig({
port: 5191,
additionalPackages: ['@planta/shared'],
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -2,42 +2,25 @@ import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import path from 'path';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [sveltekit(), tailwindcss()],
server: {
port: 5178,
strictPort: true,
fs: {
allow: [
// Allow serving files from the monorepo root node_modules
path.resolve(__dirname, '../../../../node_modules'),
// Default allowed paths
path.resolve(__dirname, 'src'),
path.resolve(__dirname, '.svelte-kit'),
path.resolve(__dirname, 'node_modules'),
path.resolve(__dirname, '../../node_modules'),
],
},
},
ssr: {
noExternal: [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
],
},
optimizeDeps: {
exclude: [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
],
},
const baseConfig = createViteConfig({
port: 5178,
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
server: {
fs: {
allow: [
path.resolve(__dirname, '../../../../node_modules'),
path.resolve(__dirname, 'src'),
path.resolve(__dirname, '.svelte-kit'),
path.resolve(__dirname, 'node_modules'),
path.resolve(__dirname, '../../node_modules'),
],
},
},
})
);

View file

@ -1,35 +1,14 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5111,
strictPort: true,
},
ssr: {
noExternal: [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
],
},
optimizeDeps: {
exclude: [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
],
},
const baseConfig = createViteConfig({
port: 5111,
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -1,17 +1,14 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5195,
strictPort: true,
},
ssr: {
noExternal: ['@manacore/shared-tailwind', '@manacore/shared-theme'],
},
optimizeDeps: {
exclude: ['@manacore/shared-tailwind', '@manacore/shared-theme'],
},
const baseConfig = createViteConfig({
port: 5195,
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -1,44 +1,15 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5185,
strictPort: true,
},
ssr: {
noExternal: [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-subscription-ui',
'lucide-svelte',
],
},
optimizeDeps: {
exclude: [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-subscription-ui',
],
},
const baseConfig = createViteConfig({
port: 5185,
additionalPackages: ['lucide-svelte'],
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -1,45 +1,15 @@
import { sveltekit } from '@sveltejs/kit/vite';
import tailwindcss from '@tailwindcss/vite';
import { defineConfig } from 'vite';
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: {
port: 5188,
strictPort: true,
},
ssr: {
noExternal: [
'@todo/shared',
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-subscription-ui',
],
},
optimizeDeps: {
exclude: [
'@todo/shared',
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/shared-feedback-ui',
'@manacore/shared-feedback-service',
'@manacore/shared-feedback-types',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/shared-subscription-ui',
],
},
const baseConfig = createViteConfig({
port: 5188,
additionalPackages: ['@todo/shared'],
});
export default defineConfig(
mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
})
);

View file

@ -13,7 +13,7 @@
| **HOCH** | Main.ts/CORS Patterns | 1.800 LOC | Mittel |
| ~~**MITTEL**~~ | ~~TypeScript Configs~~ | ~~400 LOC~~**~280 LOC entfernt** | ~~Niedrig~~ |
| **MITTEL** | UI Component Cleanup | 400 LOC | Niedrig |
| **MITTEL** | Vite Configs | 300 LOC | Niedrig |
| ~~**MITTEL**~~ | ~~Vite Configs~~ | ~~300 LOC~~**~350 LOC entfernt** | ~~Niedrig~~ |
| **MITTEL** | Navigation Stores | 50 LOC | Niedrig |
| **NIEDRIG** | Drizzle Configs | 200 LOC | Niedrig |
| **NIEDRIG** | Logger Utilities | 130 LOC | Niedrig |
@ -301,27 +301,46 @@ export function createNavigationStore(options?: {
---
### 4.2 MITTEL: Vite Configs (300 LOC)
### ~~4.2 MITTEL: Vite Configs~~ ✅ ERLEDIGT (~350 LOC gespart)
**Problem:** 15 SvelteKit Apps haben 70% identische vite.config.ts.
**Status:** `@manacore/shared-vite-config` erweitert und 15 SvelteKit Apps migriert (29.01.2026)
**Empfehlung:** Factory-Funktion in `@manacore/shared-vite-config`
**Erweitertes Package:** `packages/shared-vite-config/`
- `createViteConfig()` - Factory mit Port und additionalPackages
- `mergeViteConfig()` - Deep-merge für App-spezifische Overrides
- `MANACORE_SHARED_PACKAGES` - 22+ Pakete für SSR/optimizeDeps
**Migrierte Apps (15 von 15):**
- ✅ calendar, chat, clock, contacts, manadeck, manacore, matrix, nutriphi, picture, planta, presi, questions, skilltree, storage, todo
**Vorher (30-60 LOC pro App):**
```typescript
// packages/shared-vite-config/src/sveltekit.ts
export function createSvelteKitConfig(options: {
port: number;
packages?: string[];
}) {
return defineConfig({
plugins: [sveltekit(), tailwindcss()],
server: { port: options.port, strictPort: true },
ssr: { noExternal: options.packages || [] },
optimizeDeps: { exclude: options.packages || [] },
});
}
export default defineConfig({
plugins: [tailwindcss(), sveltekit()],
server: { port: 5174, strictPort: true },
ssr: { noExternal: ['@manacore/shared-icons', ...] },
optimizeDeps: { exclude: ['@manacore/shared-icons', ...] },
});
```
**Nachher (12-14 LOC):**
```typescript
import { createViteConfig, mergeViteConfig } from '@manacore/shared-vite-config';
const baseConfig = createViteConfig({
port: 5174,
additionalPackages: ['@app/shared'], // optional
});
export default defineConfig(mergeViteConfig(baseConfig, {
plugins: [tailwindcss(), sveltekit()],
}));
```
**Hinweis:** Matrix behält spezielle WASM-Konfiguration für matrix-js-sdk crypto.
**Einsparung:** 15 Apps × ~23 LOC = ~350 LOC
---
### 4.3 NIEDRIG: Drizzle Configs (200 LOC)
@ -389,7 +408,7 @@ export default createDrizzleConfig('chat');
|---------|-----|---------|--------|
| ~~`createAppSettingsStore()` Factory erstellen~~ | ~~600~~**323** | ~~Mittel~~ | ✅ Erledigt |
| ~~`@manacore/shared-tsconfig` Package erstellen~~ | ~~400~~**280** | ~~Niedrig~~ | ✅ Erledigt |
| `@manacore/shared-vite-config` Factory erstellen | 300 | Niedrig | Offen |
| ~~`@manacore/shared-vite-config` erweitern (15 Apps)~~ | ~~300~~**350** | ~~Niedrig~~ | ✅ Erledigt |
| Navigation Store Factory erstellen | 50 | Niedrig | Offen |
### Phase 3: Backend Setup (5-7 Tage, ~2.000 LOC)

View file

@ -26,6 +26,12 @@ export const MANACORE_SHARED_PACKAGES = [
'@manacore/shared-i18n',
'@manacore/shared-api-client',
'@manacore/shared-splitscreen',
'@manacore/shared-utils',
'@manacore/shared-tags',
'@manacore/shared-stores',
'@manacore/shared-help-types',
'@manacore/shared-help-content',
'@manacore/shared-help-ui',
] as const;
export interface ViteConfigOptions {