If you want to develop Jellyfish on your local machine, you will need the following:
- Docker
- Docker Compose
- Node.js v16
Install node dependencies with:
npm run install:all
You can then run these commands in different terminal emulators, which will run all services in non-daemon mode:
Start Postgres, Redis, and MinIO services:
npm run compose:local
Start the frontend:
SERVER_HOST=http://localhost SERVER_PORT=8000 UI_PORT=9000 npm run dev:ui
Start the backend:
MAX_WORKERS=1 SERVER_HOST=http://localhost SERVER_PORT=8000 POSTGRES_HOST=localhost REDIS_HOST=localhost \
AWS_S3_ENDPOINT=http://localhost:43680 AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE \
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY AWS_S3_BUCKET_NAME=jellyfish npm run dev:server
The API will listen on 8000
and the UI will listen on 9000
. Open http://localhost:9000 and login with:
- Username:
jellyfish
- Password:
jellyfish
Note: The development user is not available in production (
NODE_ENV=production
)
You can also view uploaded files by opening http://localhost:43697 and logging in with:
- Username:
AKIAIOSFODNN7EXAMPLE
- Password:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Below are a number of test execution examples.
Run lint checks:
npm run lint
npm run lint:server
npm run lint:ui
Run unit tests:
npm run test:unit
npm run test:unit:server
npm run test:unit:ui
Run SDK E2E tests:
SERVER_HOST=http://localhost SERVER_PORT=8000 UI_HOST=http://localhost UI_PORT=9000 npm run test:e2e:sdk
Install browser for tests:
npx playwright install chromium
Run UI E2E tests with headless browser:
SERVER_HOST=http://localhost SERVER_PORT=8000 UI_HOST=http://localhost:9000 npm run test:e2e:ui
SERVER_HOST=http://localhost SERVER_PORT=8000 UI_HOST=http://localhost:9000 npx playwright test test/e2e/ui/index.spec.js
Run UI E2E tests with browser displayed:
SERVER_HOST=http://localhost SERVER_PORT=8000 UI_HOST=http://localhost:9000 npx playwright test test/e2e/ui/index.spec.js --headed
Run server E2E tests:
SERVER_HOST=http://localhost SERVER_PORT=8000 npm run test:e2e:server
Run server integration tests:
SOCKET_METRICS_PORT=9009 SERVER_PORT=8009 POSTGRES_HOST=localhost REDIS_HOST=localhost npm run test:integration:server