Skip to content

Personalization Components Template

Matteo Besenzoni edited this page Apr 22, 2026 · 5 revisions

Target Audience: software developers


The Personalization Enablers software system architecture consists of multiple components working together. This intricate architecture can present challenges for developers when tasked with creating new enablers. To address this, we designed an additional enabler that serves as a template, making it easier to create new enabler components and facilitate the development process. This template aligns new enablers with the overall XR2Learn Personalization architecture, ensuring compatibility with existing Training, Inference, and Personalization components.

The Personalization Components Template is available as an open-source project on GitHub. Developers can use a single command to create a placeholder skeleton for a new enabler, which comes pre-configured to communicate with the other Personalization Enablers. This setup includes files and folder structure, Docker configuration, unit tests, versioning, and documentation.

By utilizing the Personalization Components Template, developers can generate the entire structure of a new enabler with a single command and focus exclusively on implementing the core functionality. This template helps ensure architectural consistency and significantly reduces development time for new enablers within the XR2Learn ecosystem.

Prerequisite Installation

Cookiecutter

pip install --user cookiecutter

Basic User Manual

  1. Run the command:

cookiecutter git@github.com:XR2Learn/Personalization-Components-Template.git

  1. Answer the prompt questions:

After running the command, you will be prompted to provide the following values:

project_name: Name of the component (e.g., "SSL Features Extraction BM Modality")
description: Short description of the component
project_slug: Repository-friendly name (e.g., "ssl_features_extraction_bm_modality")
component_folder: Main component folder (e.g., "SSL_Features_Extraction_BM_Modality")
parent_component: Parent component name (e.g., "Pre_processing")
main_python_file: Python entry-point script name without `.py` (e.g., "generate_features")
service_name: Service identifier (e.g., "ssl-features-generation-bm")
current_version: Initial version number (e.g., "0.1.0")

Example Output Structure

After completing the prompts, the template generates a fully configured enabler skeleton. A simplified example of the resulting structure is shown below:

<COMPONENT_FOLDER>/
├── docker/                 # container build assets (if provided)
├── src/                    # component source code (entry point included)
├── tests/                  # unit/integration tests (if provided)
├── docs/                   # documentation (if provided)
├── docker-compose.yml      # optional: service orchestration
├── pyproject.toml          # optional: packaging/config (may vary)
└── README.md

Relevant GitHub repository

XR2Learn Personalization Enablers - Personalization Components Template


Back to Personalization Enablers Overview

Clone this wiki locally