DataRoom is a high-performance AI training data management platform featuring a beautiful UI, multimodal support (images, latents, masks), similarity search, and a Python client for seamless integration.
To try it out, follow the guide below. Also check out the Python client inside dataroom_client and the examples in notebooks.
The simplest and fastest way to get a Dataroom stack up and running is to use Docker. If you prefer to run it without Docker, see section Setup without Docker.
cp .env.example .env
cp backend/config/settings/local.example.py backend/config/settings/local.pyThe following command builds and starts the Django, Postgres and OpenSearch containers:
docker compose up -d --buildThe static files are built as part of the Django docker. To collect them, we run:
docker compose run --rm dataroom_django python manage.py collectstatic --link --clear --noinputdocker compose run --rm dataroom_django python manage.py migratedocker compose run --rm dataroom_django python manage.py setup_opensearch --confirmdocker compose run --rm dataroom_django python manage.py createsuperuser --noinput --email [email protected]Go to http://localhost:8000 and login with [email protected] / admin
Quick overview:
- Full Application: http://localhost:8000 (Django serves pre-built React frontend)
- Django Admin: http://localhost:8000/admin/
- API Docs: http://localhost:8000/api/docs/
- OpenSearch: http://localhost:9200
For active frontend development with instant Hot Module Replacement (HMR):
- Node.js 22.14.0:
nvm use 22.14.0 - npm 10.9.2
1. Install Node.js version from .nvmrc:
nvm install && nvm use2. Install frontend dependencies:
npm install3. Enable development mode in Django settings.
Update backend/config/settings/local.py:
# FRONTEND
# ------------------------------------------------------------------------------
DJANGO_VITE_DEV_MODE = True4. Start frontend dev server locally:
npm run dev # Runs on port 3000
# For port conflicts, override the port:
npm run dev -- --port 3001 # or any available port5. Rebuild and start Django, Postgres and OpenSearch containers:
docker compose up -d --buildSee Backend setup if you like to run the Django backend locally without Docker.
Run all the backend tests inside of the Django docker:
docker compose run --rm dataroom_django pytestPlease install the pre-commit hooks for maintaining code quality:
pre-commit install --hook-type pre-commitRun production server:
docker compose run --service-ports dataroom_django ./scripts/run_web.shRun production background tasks:
docker compose run --service-ports dataroom_django ./scripts/run_tasks.shReset database:
docker compose exec dataroom_postgres bash -c "su postgres -c 'dropdb dataroom && createdb dataroom'"View logs:
docker compose logs -f dataroom_djangoRestart specific service:
docker compose restart opensearchUpdate poetry lock file after adding new dependencies to pyproject.toml:
./scripts/poetry-lock.sh- The entries in
rollupOptionsinside vite.config.js define which entry points are going to be built. - Anything inside /frontend/public/ will simply be copied over. Use this for images included in the HTML.
- Running
npm run buildbuilds and bundles the frontend, generating amanifest.json. - Built files are now ready in
/backend/static_built/. - Running
python manage.py collectstaticcollects the static files, runs whitenoise, compressing and adding a hash to the filename. - Final static files are now ready to be served from
/backend/static_collected/.
If you prefer to run the project on MacOS without Docker, follow these steps.
Install these prerequisites:
[email protected]virtualenvhttps://virtualenv.pypa.io/en/latest/installation.html[email protected]https://python-poetry.org/docs/#installationnvmhttps://github.com/nvm-sh/nvm- Postgres v16 https://postgresapp.com/
brew install snappy
To use homebrew's openssl and snappy, add the following to your .zshrc:
export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib -L/opt/homebrew/Cellar/snappy/1.1.10/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include -I/opt/homebrew/Cellar/snappy/1.1.10/include"
Create the database:
createdb dataroom
Run OpenSearch:
docker compose up opensearch
python manage.py setup_opensearch
Use the correct python version from .python-version:
brew install pyenv
pyenv init
pyenv install
pyenv local
To create a virtualenv, inside the root project folder, run:
virtualenv .venv
To install all python requirements:
pip install poetry==1.7.1
poetry install
Copy and enable local settings:
cp backend/config/settings/local.example.py backend/config/settings/local.py
Remember to update the DATABASES settings in backend/config/settings/local.py to match your local database.
After setting up frontend, build the static files once:
npm run build
Collect the static files:
python manage.py collectstatic --link --clear --noinput
