No description
  • JavaScript 85.8%
  • CSS 10.7%
  • HTML 3.5%
Find a file
2026-03-18 11:37:35 +01:00
src Initial comit 2026-03-18 11:37:35 +01:00
.gitignore Initial comit 2026-03-18 11:37:35 +01:00
index.html Initial comit 2026-03-18 11:37:35 +01:00
package-lock.json Initial comit 2026-03-18 11:37:35 +01:00
package.json Initial comit 2026-03-18 11:37:35 +01:00
README.md Initial comit 2026-03-18 11:37:35 +01:00
server.js Initial comit 2026-03-18 11:37:35 +01:00

Konfigurator Szafek

Minimalny szkielet aplikacji webowej pod dalszą rozbudowę konfiguratora szafek.

Start

npm run dev

Aplikacja uruchomi lokalny serwer na http://localhost:4173.

W PowerShellu z restrykcyjną polityką wykonania użyj:

npm.cmd run dev

Jeśli chcesz uruchomić serwer bez automatycznego otwierania przeglądarki:

$env:NO_OPEN="1"; npm.cmd run dev

Co jest gotowe

  • layout 50/50: panel narzędzi i panel wizualizacji,
  • przełącznik zamieniający strony paneli,
  • renderowanie w Web Worker z użyciem OffscreenCanvas,
  • centralny command bus dla komend UI,
  • synchronizacja stanu z URL i history.pushState,
  • obsługa back / forward zarówno z UI, jak i z przycisków przeglądarki,
  • hot reload frontendu przez SSE,
  • automatyczne otwieranie przeglądarki po starcie serwera,
  • scena three.js w workerze z orbit controls.

Sterowanie sceną

  • lewy przycisk myszy: orbit,
  • prawy przycisk lub środkowy: pan,
  • kółko myszy: zoom.

Mechanizm routingu i komend

Każda akcja UI jest reprezentowana przez obiekt komendy:

{
  type: "scene/cycle-module",
  payload: {},
  meta: {
    source: "ui",
    history: "push"
  }
}

Przepływ jest następujący:

  1. UI emituje komendę do command bus.
  2. Reducer aktualizuje centralny snapshot stanu.
  3. historyController zapisuje stan do URL i history.pushState.
  4. rendererController wysyła do workera tylko polecenia renderingu.
  5. popstate odtwarza snapshot i odpala ten sam pipeline bez dopisywania nowej historii.

Gdzie rozbudowywać