| CI/CD | |
| App | |
| Docs | |
| Package | |
| Meta |
In the context of the increasing amount of research data available in the last years and the European and national efforts around the FAIR principles, this project aims to built a system to gather and harmonise Social Science and Humanities (SSH) surveys metadata from different sources to facilitate data reusability by the academic sphere and beyond.
re{quest – reuse questionnaire data – is an open-source web application designed by the Centre des Données Socio-Politiques (CDSP) - Sciences Po, CNRS. It combines a PostgreSQL database for structured metadata storage with an Elasticsearch index for efficient full-text and similarity search. Together, they support the discovery, comparison, and reuse of social science survey metadata. The database stores structured information on questionnaires, including question texts, response categories, and variable information mappings across studies and waves. Built on the ETL process, re{quest's pipeline uses standardised metadata schemas using the Data Documentation International (DDI) norm. To date, request.sciencespo.fr provides an online access to a centralised, searchable and reusable database of 65,000 questions and variables across more than 250 quantitative surveys of the CDSP's Data Bank
- Application overview
- Architecture
- Getting started
- Versioning
- Changelog
- License
- Authors and contributors
- Acknowledgments
User documentation can be found at docs
The application is built with the following components:
- PostgreSQL : Relational database for data storage.
- Elasticsearch : Search engine for indexing and advanced search capabilities
- request-ddi app : Main application developed in Django
For now we are using both PostgreSQL and Elasticsearch. We store all the data the app requires using PostgreSQL, and then we are indexing the information we need using Elasticsearch, therefore making the search faster and more precise.
- Docker or Podman
- Docker Compose or Podman Compose
- Python 3.9+ (for local development without Docker)
Clone the repository:
git clone https://github.com/CDSP-SCPO/request-ddi.git
cd request-ddi
pip install .The Request DDI application can be installed as a Python package and integrated into other Django projects:
# Install directly from the repository
pip install git+https://github.com/CDSP-SCPO/request-ddi.git@mainTo use Request DDI in your own Django project:
- Add
request_ddito yourINSTALLED_APPSinsettings.py:
INSTALLED_APPS = [
# ... your other apps
'request_ddi',
]- Include the Request DDI URLs in your project's
urls.py:
from django.urls import path, include
urlpatterns = [
# ... your other urls
path('request/', include('request_ddi.urls')),
]This modular design allows Request DDI to be reused across different projects as a dependency.
Simply execute:
docker compose up --buildAfter the build completes, access the local project at http://localhost:8000
To run in detached mode:
docker compose up --build -dTo stop the environment:
docker compose downIf rootful Podman is being used, docker in the above commands can be replaced with
podman to start the development environment.
podman compose up --buildIn case rootless Podman is being used, it is necessary to set the container UID and GID
to root to be able to edit the files.
CONT_UID=0 CONT_GID=0 podman compose up --buildThis does not impose any security issues as in the case of rootless Podman, the host
user is mapped to root user in the container.
The project includes comprehensive unit tests that can be run in multiple ways.
A dedicated test_settings.py configuration uses SQLite for testing, allowing tests
to run with or without PostgreSQL and Elasticsearch.
When Elasticsearch is NOT running, tests requiring the service will be automatically skipped:
# Install test dependencies
pip install -e '.[test]'
# Run all tests with pytest
pytestThe tests that require Elasticsearch can be run by spinning up local development environment using Docker compose/Podman compose and running the tests inside the docker container.
# Start dev environment and wait for all services to be online
docker-compose up --build
# Start a shell inside request-ddi container
docker exec -it request-ddi bash
# Run all tests with pytest
pytestThis project follows Semantic Versioning (SemVer):
- MAJOR version for incompatible API changes
- MINOR version for backwards-compatible functionality additions
- PATCH version for backwards-compatible bug fixes
See CHANGELOG.md for a detailed list of changes between versions.
This project is licensed under GNU GPL v3 - see the LICENSE file for details.
The list of authors and contributors is available in the AUTHORS.md file.
re { quest is developed by the Centre for socio-political data (CDSP), a Support and Research Unit jointly operated by Sciences Po and the CNRS, and received the support of the French National Research Agency (ANR-24-RESO-0003)

