Waldur HomePort is a web-based client for the Waldur MasterMind. It uses yarn for dependency management and Vite as module bundler.
Developer guides (architecture, UI patterns, forms, tables, testing, i18n and more) live in docs/.
- Linux, OS X or Windows Subsystem for Linux 2 with Ubuntu
- 2 GB of RAM and 2 GB of storage
If you use VS Code or GitHub Codespaces, you can quickly set up a development environment using Dev Containers. This method provides a consistent, pre-configured environment with all necessary dependencies.
Prerequisites for Dev Containers are:
- VS Code with the Dev Containers extension installed
- Docker Desktop (for local development)
- Git
After cloning repository, when prompted "Reopen in Container", click on it. Alternatively, you can press Ctrl+Shift+P, type "Dev Containers: Reopen in Container" and press Enter.
VS Code will build the dev container and set up the environment automatically. Once the container is built and running, you'll have a fully configured development environment ready to use.
-
Update system and install basic dependencies. Example for Linux Ubuntu:
sudo apt-get update sudo apt-get upgrade sudo apt-get install git wget
-
Install Node LTS and yarn:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash source ~/.bashrc nvm install --lts npm install -g yarn
-
Clone project and go to its folder:
git clone <repository-url> cd waldur-homeport
-
Install dependencies via yarn:
yarn
PS. If you see errors related to fsevents on OS X, the workaround is:
yarn cache clean && yarn upgrade && yarn. -
Run application:
yarn start.Server will listen on
//localhost:8001If your REST API runs on different host or port, specify API_URL environment variable.
VITE_API_URL=http://127.0.0.1:8000/ yarn vite
Use Waldur MasterMind for backend.
Also you should install django-cors-headers from pip in order to add CORS headers:
pip install django-cors-headersThen you should update waldur_core/server/settings.py and add the following
lines at the end of the file:
INSTALLED_APPS += ('corsheaders',)
MIDDLEWARE = ('corsheaders.middleware.CorsMiddleware',) + MIDDLEWARE
CORS_ORIGIN_ALLOW_ALL = True
CORS_EXPOSE_HEADERS = (
'x-result-count',
'Link',
'x-impersonated-user-uuid',
)
# enable support for impersonation headers
from corsheaders.defaults import default_headers
CORS_ALLOW_HEADERS = (
*default_headers,
"X-Impersonated-User-Uuid",
)