Label Studio is a complex, NX-managed project divided into three main components:
This is the primary application that consolidates all frontend framework elements. It's the hub for integrating and managing the different libraries and functionalities of Label Studio.
Label Studio Frontend, developed with React and mobx-state-tree, is a robust frontend library tailored for data annotation. It's designed for seamless integration into your applications, providing a rich set of features for data handling and visualization. Customization and extensibility are core aspects, allowing for tailored annotation experiences.
Datamanager is an advanced tool specifically for data exploration within Label Studio. Key features include:
1 - Dependencies Installation:
- Execute
bun install --frozen-lockfileto install all necessary dependencies.
2 - Environment Configuration (Optional for HMR):
- If you want to enable Hot Module Replacement (HMR), create an
.envfile in the root Label Studio directory. - Add the following configuration:
FRONTEND_HMR=true: Enables Hot Module Replacement in Django.
Optional configurations (defaults should work for most setups):
FRONTEND_HOSTNAME: HMR server address (default: http://localhost:8010).DJANGO_HOSTNAME: Django server address (default: http://localhost:8080).
If using Docker Compose with HMR:
- Update the
env_file: .envdirective indocker-compose.override.ymlunder the app service. - Rerun the app or docker compose service from the project root for changes to take effect.
To start the development server with HMR:
- From the
webdirectory: Runbun run dev - Or from the project root: Run
make frontend-dev
- If you need to customize the configuration specifically for DataManager, follow these steps:
- Duplicate the
.env.examplefile located in the DataManager directory and rename the copy to.env. - Make your desired changes in this new
.envfile. The key configurations to consider are:NX_API_GATEWAY: Set this to your API root. For example,http://localhost:8080/api/dm.LS_ACCESS_TOKEN: This is the access token for Label Studio, which can be obtained from your Label Studio account page.
- Duplicate the
- This process allows you to have a customized configuration for DataManager, separate from the default settings in the .env.local files.
- Label Studio App:
bun run ls:dev: Build the main Label Studio app with Hot Module Reload for development.bun run ls:watch: Build the main Label Studio app continuously for development.bun run ls:e2e: Run end-to-end tests for the Label Studio app.bun run ls:unit: Run unit tests for the Label Studio app.
- Label Studio Frontend (Editor):
bun run lsf:watch: Continuously build the frontend editor.bun run lsf:serve: Run the frontend editor standalone.bun run lsf:integration: Run integration tests for the frontend editor.bun run lsf:unit: Run unit tests for the frontend editor.
- Datamanager
bun run dm:watch: Continuously build Datamanager.bun run dm:unit: Run unit tests for Datamanager.
- General
bun run build: Build all apps and libraries in the project.bun run ui:serve: Serve the Storybook instance for the shared UI library.bun run test:e2e: Run end-to-end tests for all apps and libraries.bun run test:integration: Run integration tests for all apps and libraries.bun run test:unit: Run unit tests for all apps and libraries.bun run lint: Run biome linter across all files with autofix.bun run lint-css: Run Biome CSS linter across all CSS files with autofix.
This project uses python pre-commit hooks to ensure code quality. To install the hooks, run make configure-hooks in the project root directory.
This will install the hooks and run them on every pre-push to ensure pull requests will be aligned with linting for both python and javascript/typescript code.
If for any reason you need to format or lint using the same pre-commit hooks directly, you can run make fmt or make fmt-check respectively from the project root directory.
| Project | Description |
|---|---|
| label-studio | Server part, distributed as a pip package |
| label-studio-frontend | Frontend part, written in JavaScript and React, can be embedded into your application |
| label-studio-converter | Encode labels into the format of your favorite machine learning library |
| label-studio-transformers | Transformers library connected and configured for use with label studio |
| datamanager | Data exploration tool for Label Studio |
This software is licensed under the Apache 2.0 LICENSE © HumanSignal. 2020
