Bundles¶
Invenio is a highly modular framework with many modules that provide various different functionality. We are packing related modules into bundles which is released together at the same time.
Each module has a separate documentation which you can find linked below.
Base bundle¶
The base bundle contains all modules related to the generic web application. This includes the Flask/Celery application factories, configuration management, I18N, logging, database management, assets/theme management, mail handling and administration interface.
Included modules:
- invenio-admin
Administration interface for Invenio based on Flask-Admin.
- invenio-app
Flask, WSGI, Celery and CLI applications for Invenio including security-related headers and rate limiting.
- invenio-assets
Static files management and Webpack integration for Invenio.
- invenio-base
Flask application factories implementing the application loading patterns with entry points in Invenio.
- invenio-cache
Caching module for Invenio, supporting Reddis and Memcached as backends.
- invenio-celery
Task discovery and default configuration of Celery for Invenio.
- invenio-config
Configuration loading pattern responsible for loading configuration from Python modules, instance folder and environment variables.
- invenio-db
Database connection management for Invenio.
- invenio-formatter
Jinja template engine utilities for Invenio.
- invenio-i18n
I18N utilities like user locale detection, message catalog merging and views for language change.
- invenio-logging
Configuration of logging to both console, files and log aggregation engines like sentry.io
- invenio-mail
Mail sending for Invenio using Flask-Mail.
- invenio-rest
REST API utilities including Cross Origin Resource Sharing (CORS) and Content Negotiation versioning support.
- invenio-theme
Jinja templates implementing a basic theme for Invenio as well as menus and breadcrumbs support.
- docker-invenio
Docker base images based on CentOS 7 for Invenio.
- pytest-invenio
Testing utilities for Invenio modules and applications.
Auth bundle¶
The auth bundle contains all modules related to account and access management, user profiles, session management and OAuth (provider and client)
Included modules:
- invenio-access
Role Based Access Control (RBAC) with object level permissions.
- invenio-accounts
User/role management, registration, password recovery, email verification, session theft protection, strong cryptographic hashing of passwords, hash migration, session activity tracking and CSRF protection of REST API via JSON Web Tokens.
- invenio-oauth2server
OAuth 2.0 Provider for REST API authentication via access tokens.
- invenio-oauthclient
User identity management and support for login via ORCID, GitHub, Google or other OAuth providers.
- invenio-userprofiles
User profiles for integration into registration forms.
The modules relies heavily on a suite of open source community projects:
Metadata bundle¶
The metadata bundle contains all modules related to records and metadata management including e.g. records storage, persistent identifier management, search engine indexing, an OAI-PMH server and REST APIs for records.
Included modules:
- invenio-indexer
Highly scalable record bulk indexing.
- invenio-jsonschemas
JSONSchema registry for Invenio.
- invenio-oaiserver
OAI-PMH server implementation for Invenio.
- invenio-pidstore
Management, registration and resolution of persistent identifiers including e.g DOIs.
- invenio-records
JSON document storage with revision history and JSONSchema validation.
- invenio-records-rest
REST APIs for search and CRUD operations on records and persistent identifiers.
- invenio-records-ui
User interface for displaying records.
- invenio-search
Elasticsearch integration module for Invenio.
- invenio-search-js
AngularJS search application for displaying records from the REST API.
- invenio-search-ui
User interface for searching records.
Files bundle (beta)¶
Note
This bundle is in beta. The modules are being used in production systems but are still missing some minor changes as well as documentation.
The files bundle contains all modules related to management of files in Invenio, including an object storage REST API, multiple supported storage backends, file previewers, and IIIF image server and an integration layer between files and records.
Included modules:
- invenio-files-rest
Object storage REST API for Invenio with many supported backend storage protocols and file integrity checking.
- invenio-iiif
International Image Interoperability Framework (IIIF) server for making thumbnails and zooming images.
- invenio-previewer
Previewer for Markdown, JSON/XML, CSV, PDF, JPEG, PNG, TIFF, GIF and ZIP files.
- invenio-records-files
Integration layer between object storage and records.
- invenio-xrootd
Support for the storage protocol XRootD in Invenio.
Statistics bundle (beta)¶
Note
This bundle is in beta. The modules are being used in production systems but are still missing some minor changes as well as documentation.
The statistics bundle contains all modules related to counting statistics such as file downloads, record views or any other type of events. It supports the COUNTER Code of Practice as well as Making Data Count Code of Practice including e.g. double-click detection.
Included modules:
- invenio-stats
Event collection, processing and aggregation in time-based indicies in Elasticsearch.
- invenio-queues
Event queue management module.
- counter-robots
Module providing the list of robots according to the COUNTER Code of Practice.
Deposit bundle (alpha)¶
Note
This bundle is in alpha. The modules are being used in production systems but are very likely subject to change and are missing documentation.
Included modules:
- invenio-deposit
REST API for managing deposit of records into Invenio with support for in progress editing of records.
- invenio-files-js
AngularJS application for uploading files to Invenio via streaming the binary files in an HTTP request.
- invenio-records-js
AngularJS application for interacting with the deposit REST API and rendering forms based on angular schema forms.
- invenio-sipstore
Submission Information Package (SIP) store with bagit support.
Invenio modules (alpha)¶
Note
These modules are in alpha. The modules are being used in production systems but are most likely subject to changes and are missing documentation.
In addition to above bundles, we have a number of other individual modules which are all being used in production systems, but which are likely subject to change prior to final release and in most cases are missing documentation.
- invenio-accounts-rest
REST APIs for account management.
- invenio-charts-js
AngularJS application for producing charts.
- invenio-csl-js
AngularJS application for rendering citation strings via the records REST API and the CSL REST API.
- invenio-csl-rest
REST API for retrieving Citation Style Language (CSL) style files.
- invenio-github
GitHub integration with automatic archiving of new releases in Invenio.
- invenio-openaire
Integration with OpenAIRE, including support for harvesting Open Funder Regsitry and the OpenAIRE grants database, as well as REST APIs for funders and grants.
- invenio-opendefinition
REST API for licenses from OpenDefinition and SPDX.
- invenio-pages
Static pages module for Invenio.
- invenio-pidrelations
Persistent identifier relations management to support e.g. DOI versioning.
- invenio-previewer-ispy
ISPY previewer.
- invenio-query-parser
Invenio v1 compatible query parser for Invenio v3. Note the module is GPL licensed due to a GPL-licensed dependency.
- invenio-records-editor
JSON record editor.
- invenio-records-editor-js
Angular 4 application for editing JSON records.
- invenio-s3
Support for the S3 storage protocol in Invenio.
- invenio-sequencegenerator
Module for minting and tracking multiple sequences for e.g. report numbers, journals etc.
- invenio-sse
Server-Sent Events (SSE) integration in Invenio.
- invenio-webhooks
REST API for receiving and processing webhook calls from third-party services.
- react-searchkit
Modular React library for implementing search interfaces on top of Invenio, Elasticsearch or other search APIs. Replacement for Invenio-Search-JS.
Core libraries¶
Above Invenio modules dependent on a number of smaller core libraries we have developed to take care of e.g. identifier normalization, DataCite/Dublin Core metadata generation, testing and citation formatting.
- citeproc-py-styles
Citation Style Language (CSL) style files packaged as a Python module
- datacite
Python library for generating DataCite XML from Python dictionaries and registering DOIs with the DataCite DOI registration service.
- dcxml
Python library for generating Dublin Core XML from Python dictionaries.
- dictdiffer
Python library for diffing/patching/merging JSON documents.
- dojson
JSON to JSON rule-based transformation library.
- flask-breadcrumbs
Flask extension for managing breadcrumbs in web applications.
- flask-celeryext
Celery integration for Flask.
- flask-iiif
IIIF server for Flask.
- flask-menu
Menu generation support for Flask.
- flask-sitemap
Sitemaps XML generation for Flask.
- flask-webpack
Webpack integration for Flask.
- idutils
Persistent identifier validation, identification and normalization.
- jsonresolver
JSONRef resolver with support for local plugins.
- pynpm
NPM integration for Python.
- pywebpack
Webpack integration library for Python.
- requirements-builder
Python CLI tool for testing multiple versions of different Python libraries in you continuous integration system.
- xrootdpyfs
PyFilesystem plugin adding XRootD support.
Scaffolding¶
Following modules provide templates for getting started with Invenio:
- cookiecutter-invenio-instance
Template for new Invenio instances.
- cookiecutter-invenio-datamodel
Template for new data models.
- cookiecutter-invenio-module
Template for a reusable Invenio module.
Notes on license¶
Invenio is undergoing a change of license from GPLv2 to MIT License in most cases. Thus, you may especially for alpha and beta modules see that the license is still GPL v2 in the source code. This will be changed to MIT License for all repositories before being finally released. The only module we are currently aware of that can not be converted is Invenio-Query-Parser, which has a dependency on a GPL-licensed library. Invenio-Query-Parser is however not needed by most installations, as it only provides an Invenio v1.x compatible query parser.