Metadata-Version: 2.1
Name: libreqda
Version: 1.2.1
Summary: Free and open source qualitative research tool
Home-page: https://www.libreqda.org/
License: BSD-3-Clause
Keywords: qualitative,document,text,tagging,tags,highlights,notes
Author: Remi Rampin
Author-email: remi@rampin.org
Requires-Python: >=3.11,<4
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Text Processing
Provides-Extra: mysql
Provides-Extra: otel
Provides-Extra: postgres
Requires-Dist: SQLAlchemy (>=1.4,<1.5)
Requires-Dist: XlsxWriter (>=1.4,<4)
Requires-Dist: alembic (>=1.6,<1.9)
Requires-Dist: beautifulsoup4
Requires-Dist: bleach (>=3,<6)
Requires-Dist: chardet (>=4,<6)
Requires-Dist: cryptography ; extra == "mysql"
Requires-Dist: html5lib (>=1,<2)
Requires-Dist: jinja2 (>=3.1,<3.2)
Requires-Dist: libsass (==0.22.0)
Requires-Dist: oauth2client (>=4.1.3,<5.0.0)
Requires-Dist: opentelemetry-api (>=1.5,<1.11)
Requires-Dist: opentelemetry-distro ; extra == "otel"
Requires-Dist: opentelemetry-instrumentation-sqlalchemy (>=0.24b0,<0.26) ; extra == "otel"
Requires-Dist: opentelemetry-instrumentation-tornado (>=0.24b0,<0.26) ; extra == "otel"
Requires-Dist: prometheus-async
Requires-Dist: prometheus-client
Requires-Dist: psycopg2 (>=2.8,<3) ; extra == "postgres"
Requires-Dist: pymysql (>=1.0,<2) ; extra == "mysql"
Requires-Dist: redis (>=3,<5)
Requires-Dist: requests (>=2.31.0,<3.0.0)
Requires-Dist: sentry-sdk
Requires-Dist: setuptools (>=65,<81) ; python_version >= "3.11"
Requires-Dist: subtitle-parser (>=1,<2)
Requires-Dist: tornado (>=6.1)
Project-URL: Bug Tracker, https://gitlab.com/bin-cirst/libreqda/libre-qda/-/issues
Project-URL: Documentation, https://aide.libreqda.org
Project-URL: Repository, https://gitlab.com/bin-cirst/libreqda/libre-qda
Description-Content-Type: text/markdown


_We are building on the work of [Taguette](https://www.taguette.org/) — go check them out! You will find close alignments between our code bases and even the installation instructions._


LibreQDA
========

LibreQDA is developed by the [Plateforme en humanités numériques (PhuN)](https://www.usherbrooke.ca/flsh/recherche/centres-groupes-et-equipes-de-recherche/phun) at Université de Sherbrooke. 

This qualitative data analysis software (QDA) allows you to:

+ Import PDFs, Word documents (`.docx`), text files (`.txt`), HTML, EPUB, MOBI, Open Documents (`.odt`), and Rich Text Files (`.rtf`).
+ Highlight words, sentences or paragraphs and tag them with codes you create.
+ Create hierarchical relations between your codes.
+ Retrieve your tagged documents and lists of encoded sentences.
+ Export you material in various formats for diffusion or post-processing with other tools.

[Visit our website to consult the documentation.](https://help.libreqda.org/)

Motivation and Goal
-------------------

Through its collaborations with research teams and non-profit organizations across various fields, the team at PHuN has come to recognize the crucial need for developing rich, resilient and responsive ecosystem of open-source QDA software. Numerous testimonies highlight the disconnect between the commercial incentives of proprietary software and the core theories of substantive qualitative analysis. Today, users of QDA are subjected to forced obsolescence, costly licenses, black box features and data restrictions that prevent them from fully owning their intellectual product.

Our goal is to position LibreQDA as a valuable component within a diverse array of resources available to users seeking to develop a rich understanding of their textual data. We are committed to continuous improvement through community feedback and advocate for open integration with other tools to best meet your needs.

If you think LibreQDA could do something better, reach out!

Installation
------------

A secure instance of LibreQDA running on Canadian servers is available at [https://www.libreqda.org/](https://www.libreqda.org/). You can also install LibreQDA on your own computer or server: pre-built installers for Windows and macOS, along with pip and Docker options, are available on the [Downloads page](https://www.libreqda.org/downloads).

Desktop installers (Windows, macOS)
-----------------------------------

Grab the installer for your OS from the [Downloads page](https://www.libreqda.org/downloads):

- **Windows** — `libreqda-setup.exe`
- **macOS** — `libreqda.dmg`

Launch the app; a local instance opens in your browser. No account needed, your data stays on your machine.

pip
---

    pip install libreqda
    libreqda default-config > libreqda.conf
    libreqda server libreqda.conf

Browse to [localhost:7465](http://localhost:7465/).

Docker
------

    docker pull phunudes/libreqda
    docker run -d --name libreqda -p 7465:7465 -v libreqda-data:/data phunudes/libreqda
    docker logs libreqda | grep -A1 "is now running"

The second command prints the token URL (single-user mode). Browse to it. Data persists in the `libreqda-data` volume.

Prefer to see the token URL live? Drop `-d` and let it run in the foreground — closing the terminal will stop the container, so you'd relaunch each session:

    docker run --name libreqda -p 7465:7465 -v libreqda-data:/data phunudes/libreqda

Development Setup from the Repository
-------------------------------------

Requires **Python 3.11** (3.12+ fails because `frozenlist 1.3.3` in the lock file has no wheels for it) and [Poetry](https://python-poetry.org/docs/#installation).

```
git clone https://gitlab.com/bin-cirst/libreqda/libre-qda/
cd libre-qda
poetry env use python3.11
poetry install                          # add -E postgres or -E mysql for those drivers
poetry run bash scripts/update_translations.sh
poetry run libreqda --debug             # single-user, local SQLite (~/.local/share/taguette/)
```

Open [localhost:7465](http://localhost:7465/). Tornado auto-restarts on file changes.

For multi-user mode, generate a config first and pass it to the `server` subcommand:

```
poetry run libreqda default-config > taguette.conf
poetry run libreqda --debug server taguette.conf
```

Create custom theme
-------------------

You can entirely configure LibreQDA interface by creating a theme.

1. Run `poetry run make-theme [theme-name]`. That will create 2 folders :
   - `taguette/static/scss/themes/[theme-name]` where the custom css are stored
   - `taguette/templates/alt_templates/[theme-name]` where you can override templates with the same hierarchy as in the `templates` folder
   - `taguette/static/alt_templates/[theme-name]` where you can put the files that you want to access in your custom template
2. Add this line in `taguette.conf`: `THEME = "theme-name"`

License
-------
* Copyright (c) 2023, Plateforme en humanités numériques (Université de Sherbrooke) and contributors
* Copyright (c) 2018, Remi Rampin and Taguette contributors

Licensed under a **BSD 3-clause "New" or "Revised" License**. See the `LICENSE.txt` file for details.

