This project consists of two separate services:
- Edit Server - Hosts the web-based editor interface with Monaco Editor, console, and preview iframe
- Preview Server - Serves component previews and renders React components
project_root/
├── editor/ # Główna aplikacja edytora UI
│ ├── dist/ # Skompilowane pliki aplikacji
│ ├── public/ # Statyczne pliki
│ ├── src/ # Kod źródłowy React
│ │ ├── components/ # Komponenty React
│ │ │ ├── Editor.js
│ │ │ ├── Console.js
│ │ │ └── Preview.js
│ │ ├── App.js
│ │ ├── index.js
│ │ └── App.css
│ ├── server.js # Serwer Express dla aplikacji edytora
│ ├── webpack.config.js # Konfiguracja webpack
│ └── package.json # Zależności aplikacji edytora
│
├── preview/ # Serwer podglądu komponentów
│ ├── public/ # Statyczne pliki dla podglądu
│ │ └── preview-fallback.html
│ ├── preview-server.js # Serwer Express dla podglądu
│ ├── templates/ # Szablony dla serwera podglądu
│ │ └── example.js # Przykładowy komponent
│ └── package.json # Zależności serwera podglądu
│
├── codebase/ # Usługa zarządzania kodem (Git)
│ ├── api/ # Endpointy API
│ │ ├── routes/
│ │ │ ├── project.js # Obsługa projektów
│ │ │ ├── session.js # Obsługa sesji
│ │ │ └── file.js # Operacje na plikach
│ │ └── index.js # Główny routing API
│ ├── services/ # Usługi biznesowe
│ │ ├── git-service.js # Obsługa operacji git
│ │ ├── session-service.js # Zarządzanie sesjami
│ │ └── storage-service.js # Przechowywanie danych
│ ├── models/ # Definicje modeli
│ │ ├── project.js # Model projektu
│ │ ├── user-session.js # Model sesji użytkownika
│ │ └── file.js # Model pliku
│ ├── utils/ # Narzędzia pomocnicze
│ │ ├── git-utils.js # Funkcje pomocnicze Git
│ │ └── session-utils.js # Funkcje pomocnicze sesji
│ ├── server.js # Główny plik serwera
│ ├── repositories/ # Repozytorium projektów git
│ └── package.json # Zależności serwera kodu
│
├── docker-compose.yml # Konfiguracja Docker Compose
└── README.md # Dokumentacja projektu
ReactStream to kompleksowa platforma umożliwiająca edycję, przechowywanie i podgląd komponentów React w przeglądarce, zbudowana z trzech niezależnych mikrousług:
- Editor Service (Port 80) - Główny interfejs użytkownika z edytorem kodu, konsolą i podglądem
- Codebase Service (Port 3020) - Usługa przechowująca kod w repozytorium Git i zarządzająca sesjami użytkowników
- Preview Service (Port 3010) - Serwer renderujący i wyświetlający komponenty React
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ │ │ │ │ │
│ Editor Service │ ──> │ Codebase Service│ <── │ Preview Service │
│ (Port 80) │ │ (Port 3020) │ │ (Port 3010) │
│ │ │ │ │ │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
▼
Repositories
(Stored in Git)
- Funkcje: Interfejs użytkownika, edycja kodu, zarządzanie projektami, podgląd wyników
- Technologie: React, Monaco Editor, Socket.IO
- Komponenty: Editor.js, Preview.js, Console.js, ProjectSelector.js, FileExplorer.js
- Funkcje: Zarządzanie kodem źródłowym, repozytorium Git, sesje użytkowników, historia zmian
- Technologie: Express.js, Simple-Git, Express-Session
- API: Zarządzanie projektami, plikami i sesjami
- Funkcje: Renderowanie komponentów React, wyświetlanie kodu i podglądu
- Technologie: Express.js, Axios
- Endpoints: Renderowanie komponentów, pobieranie kodu
System przechowuje projekty użytkownika na podstawie sesji przeglądarki:
- Każda nowa sesja otrzymuje unikalny identyfikator (UUID)
- Projekty są przechowywane w repozytorium Git i powiązane z sesją
- Sesje mogą być eksportowane, importowane i udostępniane
- Docker i Docker Compose
- Node.js 16+ (opcjonalnie, do uruchomienia lokalnego)
- Git
-
Sklonuj repozytorium:
git clone https://github.com/username/reactstream.git cd reactstream
-
Uruchom usługi za pomocą Docker Compose:
docker-compose up -d
-
Otwórz przeglądarkę:
- Editor UI: http://localhost
- Preview Service: http://localhost:3010
- Codebase API: http://localhost:3020/api
-
Zainstaluj zależności dla każdej usługi:
cd editor && npm install cd ../codebase && npm install cd ../preview && npm install
-
Uruchom każdą usługę w osobnym terminalu:
# Terminal 1 - Editor Service cd editor && npm start # Terminal 2 - Codebase Service cd codebase && npm start # Terminal 3 - Preview Service cd preview && npm start
- Edycja Kodu - Monaco Editor z podświetlaniem składni
- Zarządzanie Projektami - Tworzenie, wybieranie i usuwanie projektów
- Eksplorator Plików - Przeglądanie i zarządzanie plikami projektu
- Historia Zmian - Podgląd i zarządzanie historią zmian (Git)
- Podgląd na Żywo - Renderowanie komponentu w iframe
- Udostępnianie - Tworzenie linków do udostępniania projektów
- Eksport/Import - Zapisywanie i odtwarzanie stanu sesji
- Node.js (v20 or higher)
- npm (v10 or higher)
- Docker and Docker Compose (optional, for containerized setup)
-
Clone the repository:
git clone https://github.com/reactstream/docker.git cd docker
-
Set up the shared directory:
mkdir -p shared cp example.js shared/
-
Install dependencies for both services:
cd edit npm install cd ../preview npm install cd ..
-
Build the editor:
cd edit npm run build cd ..
-
Build and start the containers:
docker-compose up -d
-
Access the application at http://localhost
-
Start the preview server:
cd preview npm start
-
In a separate terminal, start the editor server:
cd edit npm start
-
Access the application at http://localhost
- Edit the React component in the editor
- Click "Update Preview" to see changes in the preview pane
- The preview will automatically refresh with your changes
- Editor: Port 80
- Preview: Port 3010
docker-compose.yml
- Konfiguracja Docker Compose dla trzech mikrousługREADME.md
- Dokumentacja projektu
editor/server.js
- Serwer Express dla aplikacji edytoraeditor/Dockerfile
- Konfiguracja Docker dla usługi edytoraeditor/package.json
- Zależności aplikacji edytoraeditor/webpack.config.js
- Konfiguracja webpack
editor/src/index.js
- Punkt wejścia aplikacji Reacteditor/src/App.js
- Główny komponent aplikacjieditor/src/App.css
- Style głównego komponentueditor/src/index.css
- Globalne style CSS
editor/src/components/Editor.js
- Komponent edytora Monacoeditor/src/components/Editor.css
- Style komponentu edytoraeditor/src/components/Console.js
- Komponent konsolieditor/src/components/Preview.js
- Komponent podglądu iframeeditor/src/components/Header.js
- Nagłówek aplikacjieditor/src/components/ProjectSelector.js
- Wybór projektóweditor/src/components/FileExplorer.js
- Eksplorator plików
editor/src/services/api.js
- Klient API do komunikacji z Codebase Service
editor/public/index.html
- Szablon HTML aplikacji React
preview/preview-server.js
- Serwer Express dla podglądu komponentówpreview/Dockerfile
- Konfiguracja Docker dla usługi podglądupreview/package.json
- Zależności usługi podglądu
preview/templates/example.js
- Przykładowy komponent Reactpreview/public/preview-fallback.html
- Strona zastępcza dla podglądu
codebase/server.js
- Serwer Express dla usługi zarządzania kodemcodebase/Dockerfile
- Konfiguracja Docker dla usługi codebasecodebase/package.json
- Zależności usługi codebase
codebase/api/index.js
- Główny routing APIcodebase/api/routes/project.js
- Zarządzanie projektamicodebase/api/routes/file.js
- Operacje na plikachcodebase/api/routes/session.js
- Zarządzanie sesjami
codebase/services/git-service.js
- Operacje Gitcodebase/services/storage-service.js
- Przechowywanie danychcodebase/services/session-service.js
- Zarządzanie sesjami
Aby uruchomić projekt, wystarczy wykonać polecenie:
docker-compose up -d
Usługi będą dostępne pod adresami:
- Editor UI: http://localhost
- Preview Service: http://localhost:3010
- Codebase API: http://localhost:3020/api