Skip to content

diverso-lab/uvlhub

Repository files navigation

Pytest Testing Suite Commits Syntax Checker Lint

Logo

uvlhub

uvlhub is a repository of feature models in UVL (Universal Variability Language) format, integrated with Zenodo and flamapy, and developed following Open Science principles by DiversoLab.

This version of the product is built on top of splent_framework, installed as a pip dependency (pinned in pyproject.toml; its code does not live in this repository). The framework provides the common infrastructure — base blueprints, services, repositories, seeders, configuration and database management — so the product repository focuses on uvlhub's own logic.

The code lives as a Flask application under app/, organized into self-contained features, and ships with rosemary, the project's CLI.


Documentation notice

docs.uvlhub.io is outdated. It no longer reflects the current architecture built on splent_framework.

The up-to-date documentation lives in this repository's docs/ folder.


Quickstart

Three steps to spin up the full development environment with Docker:

# 1. Clone the repository
git clone <repo-url> uvlhub
cd uvlhub

# 2. Create the environment file from the template
cp .env.docker.example .env

# 3. Build and start the services
docker compose -f docker/docker-compose.dev.yml up -d --build

Once the containers are up, open:

http://localhost

(nginx listens on port :80 and proxies to web:5000.)

The first build takes a while (heavy wheels such as python-sat, dd and gevent are compiled); thanks to the BuildKit pip cache mount, subsequent builds are fast.


Stack

Layer Technology
Web Flask 3.1
ORM SQLAlchemy 2.0 + Flask-Migrate
Database MariaDB
Queues & sessions Redis + RQ
Search Elasticsearch
Frontend Webpack (per-feature assets)
Common infrastructure splent_framework

Other development-environment services: MailHog (UI :8025, SMTP :1025) and a Selenium Grid (hub :4444 + Chrome + Firefox) for end-to-end tests.

Key requirements: Python 3.13. All dependencies are pinned in pyproject.toml ([project.dependencies]) and installed with pip install .. The rosemary CLI is a separate package installed with pip install -e ./rosemary.


Documentation

All project documentation lives in docs/:

Document Contents
getting-started.md Setting up the environment and first steps.
architecture.md Product architecture on splent_framework: create_app, configuration and feature loading.
features.md Anatomy of a feature and the catalog of included features.
rosemary.md Reference for the rosemary CLI and its commands.
testing.md The splent testing pyramid and how to run the tests.
deployment.md Production deployment with Docker and CD.

About

Repository of feature models in UVL format integrated with Zenodo and flamapy following Open Science principles - Developed by DiversoLab

Topics

Resources

Stars

15 stars

Watchers

4 watching

Forks

Contributors