Tovább a tartalomhoz

Architektúra áttekintés

Az ElyOS Bun workspaces alapú monorepo:

elyos-core/
├── apps/
│ └── web/ # Fő SvelteKit alkalmazás (@elyos/core)
├── packages/
│ ├── database/ # Drizzle ORM sémák, migrációk, seed (@elyos/database)
│ ├── sdk/ # Plugin SDK (@elyos/sdk)
│ └── create-elyos-app/ # CLI eszköz plugin generáláshoz
├── examples/
│ └── plugins/ # Példa plugin implementációk
├── docker/ # Dockerfile és docker-compose.yml
├── docs/ # Projekt dokumentáció
└── package.json # Root workspace konfiguráció
apps/web/src/
├── routes/ # SvelteKit fájlalapú routing
├── apps/ # Beépített asztali alkalmazások
├── lib/
│ ├── components/ # UI komponensek
│ ├── stores/ # Globális állapotkezelés (Svelte 5 runes)
│ ├── server/ # Csak szerver oldali kód
│ ├── i18n/ # Többnyelvűség
│ ├── auth/ # Autentikáció (better-auth kliens)
│ ├── services/ # Kliens oldali szolgáltatások
│ ├── types/ # TypeScript típusok
│ └── utils/ # Segédfüggvények
├── hooks.server.ts # Szerver hook-ok (auth, i18n, session)
├── hooks.client.ts # Kliens hook-ok
└── app.d.ts # SvelteKit ambient típusok
routes/
├── (public)/ # Opcionális publikus weboldal (marketing, ismertető)
├── admin/
│ ├── (auth)/ # Hitelesítési oldalak (login, 2FA, stb.)
│ └── (protected)/ # Védett asztali felület (maga a WebOS rendszer)
└── api/ # REST API végpontok
├── apps/ # Alkalmazás metaadatok
├── files/ # Fájlkezelés
├── notifications/ # Értesítések kezelése
├── plugins/ # Plugin betöltés és kezelés
└── health/ # Adatbázis elérhetőség ellenőrzése

A fő WebOS asztali felület az admin/(protected)/ alatt él. A (public)/ route csoport egy opcionális publikus weboldal (pl. marketing oldal, termékismertető) számára van fenntartva.

A viselkedést a PUBLIC_SITE_ENABLED env változó szabályozza:

ÉrtékViselkedés
trueA / útvonal befut a (public)/ csoportba — megjelenik a publikus oldal
falseA / útvonal azonnal átirányít az /admin-ra — nincs publikus oldal

Ez lehetővé teszi, hogy ugyanaz a telepítés akár önálló WebOS rendszerként, akár egy publikus weboldallal kiegészítve működjön.

Az src/apps/ mappa tartalmazza az összes beépített asztali alkalmazást. Minden alkalmazás önálló könyvtár:

apps/
├── chat/ # Valós idejű belső üzenetküldés
├── help/ # Beépített dokumentációböngésző
├── log/ # Rendszer- és hibanapló megjelenítő
├── notifications/ # Értesítések kezelése
├── plugin-manager/ # Plugin feltöltés és telepítés (admin)
├── settings/ # Megjelenés, biztonság, nyelv
└── users/ # Felhasználó-, csoport-, szerepkörkezelés (admin)

Minden alkalmazás kötelező fájljai:

FájlLeírás
index.svelteBelépési pont — a WindowManager tölti be lazily
icon.svgSVG ikon fájl — akkor szükséges, ha a metaadatok icon mezőjében fájlnév szerepel; Lucide ikonnév esetén (PascalCase, pont nélkül) nem kell fájl
*.remote.tsSzerver akciók (command/query)
menu.jsonOpcionális oldalsáv menü definíció
stores/Alkalmazás-specifikus Svelte 5 rune store-ok
components/Alkalmazás-specifikus Svelte komponensek

Az ElyOS két szerver réteget használ:

SvelteKit szerver — a fő alkalmazáslogika, server actions, API route-ok, autentikáció.

Express + Socket.IO (server.js) — valós idejű kommunikáció a chat funkcióhoz. A Socket.IO szerver a global.io változón keresztül érhető el a SvelteKit hook-okból.

Kliens
├── HTTP/HTTPS ──→ SvelteKit (routes, server actions, API)
└── WebSocket ──→ Express + Socket.IO (chat, valós idejű)
packages/database/src/
├── schemas/
│ ├── auth/ # better-auth táblák (users, sessions, stb.)
│ └── platform/ # Platform táblák (apps, chat, i18n, plugins, stb.)
├── seeds/ # Seed szkriptek
├── types/ # Exportált DB típusok
└── index.ts # Fő export (db kliens, sémák, típusok)

A @elyos/database csomag importálható az alkalmazásból:

import { db, schema } from '@elyos/database';
AliasFeloldás
$libapps/web/src/lib
$app/serverSvelteKit szerver modul
@elyos/databasepackages/database/src
RétegTechnológia
FrontendSvelteKit 2, Svelte 5 (runes), TypeScript 5
StílusTailwind CSS 4 (Vite plugin, nincs config fájl)
UI primitívekshadcn-svelte (bits-ui alapon), lucide-svelte
BackendSvelteKit server + Express + Socket.IO
AdatbázisPostgreSQL + Drizzle ORM
Autentikációbetter-auth
ValidációValibot (adat), Varlock (env)
Env kezelésVarlock + Infisical
RuntimeBun
InfrastruktúraDocker + Docker Compose
TesztelésVitest, fast-check, Playwright

Részletek: