An open API service indexing awesome lists of open source software.

https://github.com/yasinatesim/tuvix.js

A lightweight microfrontend framework for building scalable, independently deployable frontend applications
https://github.com/yasinatesim/tuvix.js

fragments mfe microfront-end microfrontend microfrontends microservice-framework module-federation orchestration-framework

Last synced: 2 months ago
JSON representation

A lightweight microfrontend framework for building scalable, independently deployable frontend applications

Awesome Lists containing this project

README

          


Tuvix.js Logo

Tuvix.js


Ein leichtgewichtiges und flexibles Microfrontend-Framework zum Erstellen skalierbarer, unabhรคngig deploybarer Frontend-Anwendungen.

Tuvix.js vereint mehrere Frontend-Anwendungen zu einer nahtlosen, einheitlichen Benutzererfahrung - ganz wie der Name vermuten lรคsst.


๐Ÿ‡ฌ๐Ÿ‡ง English ยท
๐Ÿ‡น๐Ÿ‡ท Tรผrkรงe ยท
๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol ยท
๐Ÿ‡ฉ๐Ÿ‡ช Deutsch ยท
๐Ÿ‡ซ๐Ÿ‡ท Franรงais ยท
๐Ÿ‡ฏ๐Ÿ‡ต ๆ—ฅๆœฌ่ชž ยท
๐Ÿ‡จ๐Ÿ‡ณ ไธญๆ–‡ ยท
๐Ÿ‡ฎ๐Ÿ‡น Italiano ยท
๐Ÿ‡ง๐Ÿ‡ท Portuguรชs ยท
๐Ÿ‡ฎ๐Ÿ‡ณ เคนเคฟเค‚เคฆเฅ€

---

## โœจ Funktionen

- ๐Ÿงฉ **Framework-unabhรคngig** - Verwende React, Vue, Svelte, Angular oder Vanilla JS
- ๐Ÿ“ฆ **Unabhรคngiges Deployment** - Deploye jede Micro-App separat
- ๐Ÿ”— **Dynamisches Modulladen** - Lade Microfrontends bei Bedarf
- ๐Ÿ›ฃ๏ธ **Integriertes Routing** - Nahtloses Routing zwischen Micro-Apps
- ๐Ÿ“ก **Inter-App-Kommunikation** - Event-Bus fรผr App-รผbergreifende Nachrichtenรผbermittlung
- โšก **Lightweight** - Keine Laufzeitabhรคngigkeiten, minimaler Kern
- ๐Ÿ”„ **Lifecycle Management** - Hooks fรผr Mounten, Unmounten und Aktualisieren
- ๐Ÿ”’ **Type-Safe** - Vollstรคndige TypeScript-Unterstรผtzung mit strikten Typen

---

## ๐Ÿค– KI-Komponenten-Generator

Generieren Sie tuvix.js-Komponenten aus natรผrlicher Sprache mit unserem integrierten KI-Chatbot.

- **Betrieben von:** Ollama + Qwen2.5 Coder (lรคuft 100% lokal, keine API-Kosten)
- **RAG-basiert:** Ruft relevante Beispiele aus 600 Open-Source-Komponentenbeispielen ab
- **Unterstรผtzt:** React, Vue, Svelte, Angular
- **Dataset:** [tuvix-component-dataset](https://huggingface.co/datasets/yasinatesim/tuvix-component-dataset) auf HuggingFace

---

## ๐Ÿ“ฆ Installation

```bash
# Alles-in-einem-Paket
npm install tuvix.js

# Oder einzelne Pakete installieren
npm install @tuvix.js/core @tuvix.js/router
```

---

## ๐Ÿš€ Schnellstart

### Host-Anwendung (Shell)

```ts
import { createOrchestrator } from 'tuvix.js';

const orchestrator = createOrchestrator({
router: {
mode: 'history',
routes: [
{ path: '/dashboard/*', app: 'dashboard' },
{ path: '/settings/*', app: 'settings' },
],
},
});

orchestrator.register({
name: 'dashboard',
entry: 'https://cdn.example.com/dashboard/main.js',
container: '#main-content',
activeWhen: '/dashboard/*',
});

orchestrator.register({
name: 'settings',
entry: 'https://cdn.example.com/settings/main.js',
container: '#main-content',
activeWhen: '/settings/*',
});

orchestrator.start();
```

### Micro-Frontend-App

```ts
import { defineMicroApp } from 'tuvix.js';

export default defineMicroApp({
name: 'dashboard',

bootstrap() {
console.log('Dashboard initialisiert');
},

mount({ container, props }) {
container.innerHTML = `

Willkommen, ${props?.user}!

`;
},

unmount({ container }) {
container.innerHTML = '';
},

update({ props }) {
console.log('Props aktualisiert:', props);
},
});
```

---

## ๐Ÿ”Œ Inter-App-Kommunikation

```ts
import { createEventBus } from 'tuvix.js';

const bus = createEventBus();

// App A - Event senden
bus.emit('user:login', { userId: 42, name: 'Ahmet' });

// App B - auf Event lauschen
bus.on('user:login', (data) => {
console.log(`${data.name} hat sich angemeldet!`);
});
```

---

## ๐Ÿ›ฃ๏ธ Routing

```ts
import { createRouter } from 'tuvix.js';

const router = createRouter({
mode: 'history',
routes: [
{ path: '/dashboard/*', app: 'dashboard' },
{ path: '/settings/*', app: 'settings' },
{ path: '/profile/*', app: 'profile' },
],
});
```

---

## ๐Ÿ—๏ธ Architektur

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Tuvix.js-Shell โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”โ”‚
โ”‚ โ”‚ Orchestrator โ”‚โ”‚
โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚โ”‚
โ”‚ โ”‚ โ”‚ Router โ”‚ โ”‚Event Bus โ”‚ โ”‚ Loader โ”‚ โ”‚โ”‚
โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜โ”‚
โ”‚ โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ App A โ”‚ โ”‚ App B โ”‚ โ”‚ App C โ”‚ ... โ”‚
โ”‚ โ”‚(React)โ”‚ โ”‚ (Vue) โ”‚ โ”‚(Svelteโ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

---

## ๐Ÿ“ฆ Pakete

| Paket | Beschreibung |
| --- | --- |
| [`tuvix.js`](./packages/tuvix) | Alles-in-einem-Dachpaket |
| [`@tuvix.js/core`](./packages/core) | Core Orchestrator with Lifecycle management |
| [`@tuvix.js/router`](./packages/router) | URL-basiertes Micro-App-Routing |
| [`@tuvix.js/event-bus`](./packages/event-bus) | Event-Bus fรผr Inter-App-Kommunikation |
| [`@tuvix.js/loader`](./packages/loader) | Dynamischer Modullader |
| [`@tuvix.js/sandbox`](./packages/sandbox) | CSS/JS-Isolation (Shadow DOM + Proxy) |
| [`@tuvix.js/react`](./packages/react) | React 18+ Bindings und Hooks |
| [`@tuvix.js/vue`](./packages/vue) | Vue 3 Bindings und Composables |
| [`@tuvix.js/svelte`](./packages/svelte) | Svelte 3-5 Bindings |
| [`@tuvix.js/angular`](./packages/angular) | Angular 15+ Bindings |
| [`create-tuvix-app`](./packages/cli) | CLI-Scaffolding-Tool |
| [`@tuvix.js/devtools`](./packages/devtools) | In-Page-Debug-Panel |
| [`@tuvix.js/server`](./packages/server) | Serverseitige Komposition |
| [`@tuvix.js/module-federation`](./packages/module-federation) | Webpack Module Federation Integration |

---

## ๐Ÿ“ Projektstruktur

```
tuvix.js/
โ”œโ”€โ”€ packages/
โ”‚ โ”œโ”€โ”€ core/ # @tuvix.js/core
โ”‚ โ”œโ”€โ”€ router/ # @tuvix.js/router
โ”‚ โ”œโ”€โ”€ event-bus/ # @tuvix.js/event-bus
โ”‚ โ”œโ”€โ”€ loader/ # @tuvix.js/loader
โ”‚ โ”œโ”€โ”€ sandbox/ # @tuvix.js/sandbox
โ”‚ โ”œโ”€โ”€ react/ # @tuvix.js/react
โ”‚ โ”œโ”€โ”€ vue/ # @tuvix.js/vue
โ”‚ โ”œโ”€โ”€ svelte/ # @tuvix.js/svelte
โ”‚ โ”œโ”€โ”€ angular/ # @tuvix.js/angular
โ”‚ โ”œโ”€โ”€ cli/ # create-tuvix-app
โ”‚ โ”œโ”€โ”€ devtools/ # @tuvix.js/devtools
โ”‚ โ”œโ”€โ”€ server/ # @tuvix.js/server
โ”‚ โ”œโ”€โ”€ module-federation/ # @tuvix.js/module-federation
โ”‚ โ””โ”€โ”€ tuvix/ # tuvix.js (Dachpaket)
โ”œโ”€โ”€ examples/
โ”‚ โ”œโ”€โ”€ with-angular/ # Angular 15+ Beispiel
โ”‚ โ”œโ”€โ”€ with-module-federation-react/ # Module Federation + React Beispiel
โ”‚ โ”œโ”€โ”€ with-multiple-frameworks/ # Mehrere Frameworks Beispiel
โ”‚ โ”œโ”€โ”€ with-react/ # React 18+ Beispiel
โ”‚ โ”œโ”€โ”€ with-react-devtools/ # React + DevTools Beispiel
โ”‚ โ”œโ”€โ”€ with-react-event-bus/ # React + Event Bus Beispiel
โ”‚ โ”œโ”€โ”€ with-react-router/ # React + Router Beispiel
โ”‚ โ”œโ”€โ”€ with-react-sandbox/ # React + Sandbox Beispiel
โ”‚ โ”œโ”€โ”€ with-ssr-react/ # SSR + React Beispiel
โ”‚ โ”œโ”€โ”€ with-ssr-vanilla/ # SSR + Vanilla JS Beispiel
โ”‚ โ”œโ”€โ”€ with-svelte/ # Svelte 5 Beispiel
โ”‚ โ”œโ”€โ”€ with-vanilla/ # Vanilla JS Beispiel
โ”‚ โ””โ”€โ”€ with-vue/ # Vue 3 Beispiel
โ”œโ”€โ”€ website/ # Dokumentationsseite (VitePress, 10 Sprachen)
โ”œโ”€โ”€ .github/ # CI/CD-Workflows
โ”œโ”€โ”€ package.json # Root-Workspace-Konfiguration
โ”œโ”€โ”€ pnpm-workspace.yaml
โ”œโ”€โ”€ tsconfig.base.json
โ””โ”€โ”€ vitest.config.ts
```

---

## ๐Ÿ—บ๏ธ Roadmap

### โœ… Abgeschlossen

- [x] Kern-Orchestrator
- [x] Lifecycle management
- [x] Dynamisches Modulladen
- [x] Event-Bus
- [x] URL-Routing mit History/Hash-Modi
- [x] CSS/JS-Sandbox-Isolation
- [x] CLI-Scaffolding-Tool (`npx create-tuvix-app`)
- [x] DevTools-Browsererweiterung
- [x] Serverseitige Komposition
- [x] Module-Federation-Unterstรผtzung
- [x] Framework-Bindings (React, Vue, Svelte, Angular)
- [x] i18n-Dokumentation (10 Sprachen)

### ๐Ÿ”œ Demnรคchst

- [ ] Hot Module Reload zwischen Micro-Apps
- [ ] Adapter fรผr gemeinsames State-Management
- [ ] Preloading- und Prefetching-Strategien
- [ ] Plugin-System und Middleware-API
- [ ] Visueller Abhรคngigkeitsgraph in DevTools
- [ ] Test-Utilities und Mock-Orchestrator
- [ ] Native ESM- / Importmap-Unterstรผtzung
- [ ] Edge/CDN-fรคhige serverseitige Komposition
- [ ] VS Code-Erweiterung fรผr DevTools-Integration
- [ ] Storybook-Integration zur Micro-App-Isolation

---

## ๐Ÿงช Beispiele

Sofort ausfรผhrbare Beispiele fรผr jedes unterstรผtzte Framework sind im Verzeichnis [`examples/`](./examples) verfรผgbar:

| Beispiel | Framework | Pfad |
| --- | --- | --- |
| [Angular-Beispiel](./examples/with-angular) | Angular 15+ | `examples/with-angular/` |
| [Module Federation + React-Beispiel](./examples/with-module-federation-react) | React 18+ | `examples/with-module-federation-react/` |
| [Mehrere Frameworks-Beispiel](./examples/with-multiple-frameworks) | Gemischt | `examples/with-multiple-frameworks/` |
| [React-Beispiel](./examples/with-react) | React 18+ | `examples/with-react/` |
| [React + DevTools-Beispiel](./examples/with-react-devtools) | React 18+ | `examples/with-react-devtools/` |
| [React + Event Bus-Beispiel](./examples/with-react-event-bus) | React 18+ | `examples/with-react-event-bus/` |
| [React + Router-Beispiel](./examples/with-react-router) | React 18+ | `examples/with-react-router/` |
| [React + Sandbox-Beispiel](./examples/with-react-sandbox) | React 18+ | `examples/with-react-sandbox/` |
| [SSR + React-Beispiel](./examples/with-ssr-react) | React 18+ | `examples/with-ssr-react/` |
| [SSR + Vanilla JS-Beispiel](./examples/with-ssr-vanilla) | Kein Framework | `examples/with-ssr-vanilla/` |
| [Svelte-Beispiel](./examples/with-svelte) | Svelte 5 | `examples/with-svelte/` |
| [Vanilla JS-Beispiel](./examples/with-vanilla) | Kein Framework | `examples/with-vanilla/` |
| [Vue-Beispiel](./examples/with-vue) | Vue 3 | `examples/with-vue/` |

Jedes Beispiel zeigt:

- Eine **Shell-(Host-)Anwendung**, die den Orchestrator startet
- Zwei **Micro-Frontend-Apps**, die dynamisch registriert und geladen werden
- Inter-App-Kommunikation รผber den Event-Bus

---

## ๐Ÿค Mitwirken

Beitrรคge sind willkommen! Bitte lies den [Leitfaden zum Mitwirken](./CONTRIBUTING.md), bevor du einen PR einreichst.

```bash
# Repository klonen
git clone https://github.com/yasinatesim/tuvix.js.git

# Abhรคngigkeiten installieren
pnpm install

# Alle Pakete bauen
pnpm build

# Tests ausfรผhren
pnpm test
```

---

## ๐Ÿ”‘ Lizenz

Copyright ยฉ 2026 - MIT-Lizenz.
Siehe [LICENSE](./LICENSE) fรผr weitere Informationen.

---

Diese README wurde von markdown-manager generiert ๐Ÿฅฒ