Repository navigation
Rozwój
Wymagany Node.js 22+.
npm install
npm run dev # serwer :3000 + Vite :5173 (proxy /ws)Otwórz http://localhost:5173 w dwóch kartach i dołącz do tego samego pokoju.
Wersja produkcyjna lokalnie:
npm run build
npm start # http://localhost:3000 (tylko P2P)
node packages/server/dist/index.js --sfu # z SFU na porcie 40000 (udp+tcp)Aplikacja desktopowa:
npm run desktopJeśli npm run desktop zgłasza brak pliku binarnego Electrona: node node_modules/electron/install.js.
npm test # serwer: sygnalizacja, polityka trybu, moderacja, SFU z prawdziwym workerem mediasoup; klient: format klatek E2EE
npm run build && npm run test:e2e # end-to-end w Chromium (Playwright)Testy end-to-end (packages/e2e) uruchamiają prawdziwy serwer i kilku uczestników w osobnych kontekstach Chromium
z fałszywą kamerą i mikrofonem (--use-fake-device-for-media-stream). Sprawdzają m.in. wideo w obie strony, czat,
przesłanie pliku (SHA-256), mesh 3 osób, przełączanie P2P ⇄ SFU, automatyczne przejście na SFU i powrót do P2P,
awarię serwera w trakcie rozmowy, szyfrowanie, moderację, profile jakości, obraz w obrazie i to, że kamera i mikrofon
nie działają poza rozmową. Drogę mediów weryfikują po statystykach getStats() każdego RTCPeerConnection
(połączenie z SFU rozpoznają po ice-lite w SDP). Pierwsze uruchomienie wymaga przeglądarki:
npx playwright install chromium.
CI (.github/workflows/ci.yml): typecheck, build, testy serwera i E2E na Linuksie, testy serwera na Windowsie,
budowanie i test dymny obrazu Dockera. Po zielonym CI image.yml publikuje obraz ghcr.io/kauczu/tutaj.
npm run desktop:dist # → packages/desktop/release/Tutaj-Setup-<wersja>.exe (~120 MB)Instalator NSIS (x64, po polsku): wybór katalogu, skrót na pulpicie i w menu Start, instalacja dla bieżącego
użytkownika (bez uprawnień administratora). Klient WWW jest dołączony jako zasób, a mediasoup-worker.exe leży poza
app.asar, bo musi być uruchamiany jako osobny proces.
- Podnieś
versioni wersje zależności@tutaj/*we wszystkichpackage.json, uruchomnpm install(lockfile). - Wypchnij zmiany i poczekaj na zielone CI.
- Wypchnij tag (
git tag -a v0.7.5 -m "Tutaj 0.7.5" && git push origin v0.7.5).
Tag uruchamia release.yml (instalator, latest.yml i .blockmap w Releases – z nich korzysta autoaktualizacja
aplikacji desktopowej) oraz image.yml (obraz Dockera z tagami X.Y.Z i X.Y). Ręczne uruchomienie release.yml
zapisuje instalator tylko jako artefakt.
Motyw opiera się na grafice autora (Ziemia o świcie i Księżyc, brand/background.jpg): granat kosmosu jako tło,
błękit atmosfery (#4d9aca) jako akcent, poświata horyzontu (#a8c4d8) na wyróżnieniach, szklane panele nad sceną
i logo „Tutaj.eu.org by Lorem Ipsum”. Grafika jest dołączona do aplikacji jako WebP
(packages/client/public/background.webp 1920 px, background-mobile.webp 1080 px), więc działa też offline.
Kolory są zmiennymi CSS na początku packages/client/src/style.css.
Marka (nazwa, logo, grafiki) nie jest objęta licencją kodu – fork musi mieć własną, zob. NOTICE.md.
Użytkownicy
Serwer
Programiści