# Label Studio Label Studio is a complex, NX-managed project divided into three main components: ## [Main App (`apps/labelstudio`)][lso] 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. ## [Library - Label Studio Frontend (`libs/editor`)][lsf] 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. ## [Library - Datamanager (`libs/datamanager`)][dm] Datamanager is an advanced tool specifically for data exploration within Label Studio. Key features include: ## Installation Instructions 1 - **Dependencies Installation:** - Execute `yarn install --frozen-lockfile` to install all necessary dependencies. 2 - **Environment Configuration (Optional for HMR):** - If you want to enable Hot Module Replacement (HMR), create an `.env` file 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: .env` directive in `docker-compose.override.yml` under 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 `web` directory: Run `yarn dev` - Or from the project root: Run `make frontend-dev` #### Custom Configuration for DataManager: - If you need to customize the configuration specifically for DataManager, follow these steps: - Duplicate the `.env.example` file located in the DataManager directory and rename the copy to `.env`. - Make your desired changes in this new `.env` file. 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. - This process allows you to have a customized configuration for DataManager, separate from the default settings in the .env.local files. ## Usage Instructions ### Key Development and Build Commands - **Label Studio App:** - `yarn ls:dev`: Build the main Label Studio app with Hot Module Reload for development. - `yarn ls:watch`: Build the main Label Studio app continuously for development. - `yarn ls:e2e`: Run end-to-end tests for the Label Studio app. - `yarn ls:unit`: Run unit tests for the Label Studio app. - **Label Studio Frontend (Editor):** - `yarn lsf:watch`: Continuously build the frontend editor. - `yarn lsf:serve`: Run the frontend editor standalone. - `yarn lsf:e2e`: Run end-to-end tests for the frontend editor. - `yarn lsf:integration`: Run integration tests for the frontend editor. - `yarn lsf:unit`: Run unit tests for the frontend editor. - **Datamanager** - `yarn dm:watch`: Continuously build Datamanager. - `yarn dm:unit`: Run unit tests for Datamanager. - **General** - `yarn build`: Build all apps and libraries in the project. - `yarn ui:serve`: Serve the Storybook instance for the shared UI library. - `yarn test:e2e`: Run end-to-end tests for all apps and libraries. - `yarn test:integration`: Run integration tests for all apps and libraries. - `yarn test:unit`: Run unit tests for all apps and libraries. - `yarn lint`: Run biome linter across all files with autofix. - `yarn lint-scss`: Run stylelint linter across all scss files with autofix. ### Git Hooks 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. ## Ecosystem | Project | Description | |----------------------------------|-| | [label-studio][lso] | Server part, distributed as a pip package | | [label-studio-frontend][lsf] | Frontend part, written in JavaScript and React, can be embedded into your application | | [label-studio-converter][lsc] | Encode labels into the format of your favorite machine learning library | | [label-studio-transformers][lst] | Transformers library connected and configured for use with label studio | | [datamanager][dm] | Data exploration tool for Label Studio | ## License This software is licensed under the [Apache 2.0 LICENSE](../LICENSE) © [HumanSignal](https://www.humansignal.com/). 2020 [lsc]: https://github.com/HumanSignal/label-studio-converter [lst]: https://github.com/HumanSignal/label-studio-transformers [lsf]: libs/editor/README.md [dm]: libs/datamanager/README.md [lso]: apps/labelstudio/README.md