Hozzájárulás
Köszönjük, hogy érdeklődsz az ElyOS fejlesztése iránt! Ez az útmutató segít az indulásban, bemutatja a konvencióinkat, és végigvezet az első hozzájárulás beküldésén.
Magatartási kódex
Szekció neve “Magatartási kódex”Vállalásunk
Szekció neve “Vállalásunk”Elkötelezettek vagyunk amellett, hogy mindenki számára befogadó, barátságos és zaklatásmentes élményt nyújtsunk, kortól, testalkattól, fogyatékosságtól, etnikai hovatartozástól, nemi identitástól és kifejezésmódtól, tapasztalati szinttől, nemzetiségtől, megjelenéstől, fajtól, vallástól, valamint szexuális identitástól és orientációtól függetlenül.
Elvárt viselkedés
Szekció neve “Elvárt viselkedés”- Légy tisztelettudó és figyelmes minden interakció során
- Fogadd szívesen az újonnan érkezőket, és segítsd őket az indulásban
- Fogadd el az építő jellegű kritikát nyitottan
- Arra összpontosíts, ami a közösség és a projekt számára a legjobb
- Mutass empátiát a közösség többi tagja iránt
Elfogadhatatlan viselkedés
Szekció neve “Elfogadhatatlan viselkedés”- Zaklatás, trollkodás vagy személyes támadások
- Mások személyes adatainak közzététele hozzájárulás nélkül
- Diszkriminatív nyelvezet vagy képanyag
- Bármilyen viselkedés, amely szakmai környezetben nem lenne elfogadható
Érvényesítés
Szekció neve “Érvényesítés”A projekt karbantartói eltávolíthatják, szerkeszthetik vagy elutasíthatják azokat a hozzászólásokat, commitokat, kódokat, issue-kat és egyéb hozzájárulásokat, amelyek megsértik ezt a Magatartási kódexet. Ismétlődő vagy súlyos szabálysértés esetén ideiglenes vagy végleges kitiltás következhet.
A szabálysértéseket privát issue megnyitásával vagy a karbantartók közvetlen megkeresésével lehet jelenteni.
Előfeltételek
Szekció neve “Előfeltételek”Mielőtt elkezdenéd a fejlesztést, győződj meg róla, hogy telepítve vannak a szükséges eszközök (Bun, Node.js, Docker, Git).
Részletes leírás: Első lépések →
Fejlesztői környezet beállítása
Szekció neve “Fejlesztői környezet beállítása”A fejlesztői környezet beállításához kövesd az alábbi lépéseket:
- Fork és klónozás — Forkold a repót GitHub-on, majd klónozd le
- Függőségek telepítése —
bun install - Környezeti változók — Másold át a
.env.examplefájlt.env-re és töltsd ki - Adatbázis indítása —
bun docker:dbésbun db:init - Fejlesztői szerver —
bun app:dev
Részletes leírás: Első lépések →
Hasznos parancsok: Scripts referencia →
Projektstruktúra
Szekció neve “Projektstruktúra”A projekt monorepo struktúrát követ Bun workspaces-szel. A fő alkalmazás a apps/web könyvtárban található, a megosztott csomagok pedig a packages/ alatt.
Részletes leírás: Architektúra →
Kódstílus és konvenciók
Szekció neve “Kódstílus és konvenciók”Nyelv
Szekció neve “Nyelv”A kódbázis belső megjegyzésekhez, változónevekhez és dokumentációhoz magyar nyelvet használ. Meglévő fájlok módosításakor kövesd az adott fájlban már jelen lévő nyelvi konvenciót.
TypeScript
Szekció neve “TypeScript”- Strict mód engedélyezve — kerüld az
anyhasználatát, ahol lehetséges - Exportált függvényeknél használj explicit visszatérési típust
- Objektum alakzatokhoz az
interface-t részesítsd előnyben atype-pal szemben - Belső importokhoz használd a
$lib/...útvonal aliasokat
Svelte 5
Szekció neve “Svelte 5”Az ElyOS Svelte 5-öt rune-okkal használ. Főbb minták:
- Reaktivitáshoz használd a
$state,$derivedés$effectrune-okat (ne a régi$:szintaxist) - Osztályalapú store-ok
$statetulajdonságokkal,createX()/setX()/getX()függvényeken keresztül exportálva - A store fájlok
.svelte.tskiterjesztést használnak
Formázás és linting
Szekció neve “Formázás és linting”Prettier-t és ESLint-et használunk. A Prettier konfiguráció (.prettierrc):
- Tabulátor a behúzáshoz
- Szimpla idézőjelek
- Nincs záró vessző
- 100 karakter sorszélesség
Commitolás előtt mindig futtasd:
bun format # Automatikus formázásbun lint # Problémák ellenőrzése- Tailwind CSS 4 a Vite pluginon keresztül (nincs
tailwind.configfájl) - Részesítsd előnyben a Tailwind utility osztályokat az egyedi CSS-sel szemben
- Svelte-ben feltételes osztályokhoz használd a
class:direktívát
Szerver akciók
Szekció neve “Szerver akciók”A szerver oldali logika a *.remote.ts fájlokban a következő mintát követi:
command(schema, handler)mutációkhozquery(handler)olvasásokhoz- Mindig validáld a bemenetet Valibot sémákkal
- Visszatérési érték:
{ success: boolean, error?: string, ...data }
Részletes leírás: Server Actions →
Adatbázis
Szekció neve “Adatbázis”- A sémák a
packages/database/src/schemas/könyvtárban találhatók - Minden adatbázis-művelethez Drizzle ORM-et használj
- Sémaváltozások után futtasd a
bun db:generateparancsot a migrációk létrehozásához
Részletes leírás: Adatbázis →
Tesztelés
Szekció neve “Tesztelés”- Vitest egységtesztekhez
- fast-check tulajdonságalapú tesztekhez
- Playwright végponttól végpontig (e2e) tesztekhez
- Tesztek futtatása az
apps/webkönyvtárból:bun test
Részletes leírás: Tesztelés →
Commit üzenetek
Szekció neve “Commit üzenetek”A Conventional Commits specifikációt követjük.
Formátum
Szekció neve “Formátum”<típus>(<hatókör>): <leírás>
[opcionális törzs]
[opcionális lábléc(ek)]Típusok
Szekció neve “Típusok”| Típus | Leírás |
|---|---|
feat | Új funkció |
fix | Hibajavítás |
docs | Csak dokumentációs változtatások |
style | Formázás, hiányzó pontosvesszők stb. (nem kódváltozás) |
refactor | Kódváltozás, ami sem hibát nem javít, sem funkciót nem ad hozzá |
perf | Teljesítményjavítás |
test | Tesztek hozzáadása vagy frissítése |
build | Build rendszer vagy függőségek változtatása |
ci | CI/CD konfiguráció változtatása |
chore | Egyéb változtatások, amelyek nem módosítják a src vagy test fájlokat |
Hatókör
Szekció neve “Hatókör”Használd a csomag vagy terület nevét hatókörként:
core— fő SvelteKit alkalmazás (apps/web)sdk— SDK csomag (packages/sdk)cli— CLI eszköz (packages/create-elyos-app)db— adatbázis csomag (packages/database)docker— Docker konfigurációdocs— dokumentáció
Példák
Szekció neve “Példák”feat(core): add keyboard shortcuts to window managerfix(sdk): resolve mock data service localStorage race conditiondocs(cli): update template selection instructionsrefactor(db): simplify user schema relationstest(core): add property-based tests for taskbar sortingci: add arm64 platform to Docker buildTörő változások
Szekció neve “Törő változások”Törő változásoknál adj hozzá !-t a típus/hatókör után, és használj BREAKING CHANGE: láblécet:
feat(sdk)!: rename DataService.query to DataService.sql
BREAKING CHANGE: DataService.query() has been renamed to DataService.sql()to better reflect its purpose. Update all plugin code accordingly.Branching stratégia
Szekció neve “Branching stratégia”main— stabil, éles környezetbe kész kóddevelop— integrációs branch a következő kiadáshozfeat/<név>— funkció branchek (develop-ból ágaznak ki)fix/<név>— hibajavító branchek (develop-ból vagymain-ből hotfix esetén)
# Funkció branch létrehozásagit checkout developgit pull upstream developgit checkout -b feat/my-feature
# Hibajavító branch létrehozásagit checkout developgit pull upstream developgit checkout -b fix/my-bugfixPull Request folyamat
Szekció neve “Pull Request folyamat”Beküldés előtt
Szekció neve “Beküldés előtt”-
Szinkronizálás az upstream-mel:
Terminál git fetch upstreamgit rebase upstream/develop -
Összes ellenőrzés futtatása:
Terminál bun formatbun lintbun app:checkbun test # az apps/web könyvtárból -
Maradj fókuszban — egy PR egy funkcióhoz vagy javításhoz. Kerüld az egymáshoz nem kapcsolódó változtatások keverését.
PR beküldése
Szekció neve “PR beküldése”- Pushold a branchedet a saját forkodba
- Nyiss egy Pull Requestet a
developbranch felé - Töltsd ki a PR sablont a következőkkel:
- A változtatás egyértelmű leírása és indoklása
- Kapcsolódó issue szám(ok) (pl.
Closes #42) - Képernyőképek vagy felvételek UI változtatásoknál
- Törő változások vagy migrációs lépések, ha vannak
Áttekintési folyamat
Szekció neve “Áttekintési folyamat”- Legalább egy karbantartó jóváhagyása szükséges a mergelés előtt
- A CI ellenőrzéseknek (lint, típusellenőrzés, tesztek, build) sikeresen le kell futniuk
- A reviewerek kérhetnek módosításokat — kezeld a visszajelzéseket és pushold a frissítéseket ugyanarra a branchre
- Jóváhagyás után a karbantartó squash and merge módszerrel mergeli
PR tippek
Szekció neve “PR tippek”- Írj leíró címet a conventional commit formátumban
- Tartsd a PR-eket kicsinek és áttekinthetőnek (lehetőleg 400 sor diff alatt)
- Adj hozzá inline megjegyzéseket a saját PR-edhez a nem nyilvánvaló döntések magyarázatához
- Válaszolj a review visszajelzésekre időben
Hibajelentés
Szekció neve “Hibajelentés”Hibabejelentések
Szekció neve “Hibabejelentések”Hiba bejelentésekor add meg a következőket:
- Leírás — mi történt, és mi volt az elvárt viselkedés
- Reprodukálási lépések — minimális lépések a hiba kiváltásához
- Környezet — operációs rendszer, böngésző, Bun verzió, Node.js verzió
- Képernyőképek vagy naplók — ha releváns
- ElyOS verzió — commit hash vagy kiadási tag
Funkciókérések
Szekció neve “Funkciókérések”Funkció kérésekor add meg a következőket:
- Probléma — milyen problémát old meg?
- Javasolt megoldás — hogyan kellene működnie?
- Megvizsgált alternatívák — milyen más megközelítéseket fontoltál meg?
- További kontextus — mockupok, példák vagy hivatkozások
Címkék
Szekció neve “Címkék”A karbantartók a következő címkékkel kategorizálják az issue-kat:
bug— megerősített hibaenhancement— funkciókérésgood first issue— kezdőknek megfelelőhelp wanted— közösségi hozzájárulás szívesen fogadvadocumentation— dokumentáció fejlesztése szükségeswontfix— nem tervezett
Fejlesztési tippek
Szekció neve “Fejlesztési tippek”Beépített alkalmazásokkal való munka
Szekció neve “Beépített alkalmazásokkal való munka”Minden alkalmazásnak a src/apps/[app-name]/ könyvtárban saját belépési pontja (index.svelte), ikonja és opcionális szerver akciói vannak.
Részletes leírás: Beépített alkalmazások →
Hot Reload
Szekció neve “Hot Reload”A fejlesztői szerver támogatja a hot module replacement-et. A .svelte, .ts és .css fájlok változásai azonnal megjelennek teljes oldal újratöltés nélkül.
Adatbázis változtatások
Szekció neve “Adatbázis változtatások”- Módosítsd a sémákat a
packages/database/src/schemas/könyvtárban - Futtasd a
bun db:generateparancsot a migráció létrehozásához - Futtasd a
bun db:migrateparancsot az alkalmazáshoz - Teszteld a
bun db:studiosegítségével az adatbázis vizsgálatához
Részletes leírás: Adatbázis →
Specifikus tesztek futtatása
Szekció neve “Specifikus tesztek futtatása”# Összes teszt futtatásacd apps/web && bun test
# Egy adott tesztfájl futtatásacd apps/web && bunx vitest run src/lib/utils/myUtil.test.ts
# Csak tulajdonságalapú tesztek futtatásacd apps/web && bun test:pbtRészletes leírás: Tesztelés →
Segítségkérés
Szekció neve “Segítségkérés”Ha bármilyen kérdésed van, vagy elakadtál:
- Issues — keress a meglévő issue-k között, vagy nyiss egy újat
- Discussions — használd a GitHub Discussions-t kérdésekhez és ötletekhez
- Dokumentáció — nézd meg ezt a dokumentációs oldalt az útmutatókért
- Hibaelhárítás — gyakori problémák megoldásai: Hibaelhárítás →
Köszönjük, hogy hozzájárulsz az ElyOS-hoz! Minden hozzájárulás számít, legyen bármilyen kicsi. 🎉