![alt text](img/constrainify-logo-no-background.svg){width=75%}

[![Latest Version](https://gitlab.gwdg.de/aqinda/constrainify-core/-/badges/release.svg)](https://gitlab.gwdg.de/aqinda/constrainify-core/-/releases)

# Constrainify - Simplify Creating Quality Constraints to Analyze Data
Constrainify is an application that allows users to create quality constraints and perform data quality analysis. Users can define quality constraints in the form of intuitive sentences based on templates. They can select a set from the defined constraints and run it for their quality analysis. The two data quality tools, [MQAF](https://github.com/pkiraly/qa-catalogue) and [QPM](https://github.com/Project-KONDA/pattern-based-quality-analysis), work in the background to produce a detailed and understandable quality report.

## Why Constrainify?
Typical data quality tools often require a variety of skills. In addition to the typical analytical skills of a data analyst, expert knowledge of data and data models is also required. Constrainify takes care of the details of the data and the structure of the data model behind it.

Users only need an affinity for quality problems and an interest in high data quality. Constrainify allows users to define constraints using natural language and easy to understand sentences. Users can define their own constraints based on templates and adapt them to their data. Quality analysis runs in the background and produces a corresponding quality report. No account is required and the data remains temporary and anonymous.

## Demo
[Constrainify](https://constrainify.gwdg.de)

## Getting Started
> **Step 1** Make sure you have Docker installed, clone this repository and navigate to its directory.

> **Step 2** Create a secret key stored in the file `session_key.env` that looks like this: `6zgm8raxznijv7781k49ut5m9`.

> **Step 3** Use Docker to run the application:
```bash
docker compose up
```
> **Step 4**  Go to http://localhost:8000 on any browser and enjoy Constrainfy!

## Configure
Environment variables like ports are stored in `.env.prod`. By default, only two ports are requested on your host: `8000` and `XXXX`. Change or override them to your liking.