Home
Softono
fare-invenio-framework

fare-invenio-framework

Open source MIT Python
13
Stars
2
Forks
51
Issues
5
Watchers
3 years
Last Commit

About fare-invenio-framework

The fare-invenio-framework is the core codebase for FARE stands for the Free Architecture for Remote Education an e-learning web platform built on the Invenio v3.4.0 framework. Its primary objective is to provide a repository with robust features for searching, downloading, and managing educational content. Registered users can upload new Learning Objects which undergo a staff review process before publication, while also having permissions to modify or delete their existing content. The platform supports quick search functionality to locate specific materials and includes a comprehensive user login and permission management system. It is designed to operate in full-stack containerized environments using Docker and Docker Compose, requiring dependencies such as NodeJS, Elasticsearch, Redis, and RabbitMQ. The system facilitates both production deployment and local development setups through standardized scripts for database initialization, asset building, and index creation, making it suitable for educational

Platforms

Web Self-hosted

Languages

Python

Links

Coverage Statushttps://github.com/open-education-polito/fare-platform/blob/master/LICENSE GitHub release

FARE

The Free Architecture for Remote Education

Index

Introduction

This is the main codebase for FARE. FARE is an e-learning web platform. The main aim of FARE is to provide repository features: easy search and download functionalities. Furthermore, for registered users it is possible to upload new contents, modify some existing ones or delete.

Features list

  • Quick search
  • Download simple Learning Object
  • User login and permission management
  • Content upload

Searching material

To search the desired material you just have to type what you are looking for in the search bar

Upload content

Everyone can upload content but it is necessary to be logged in. After the upload your content will be reviewed and, if everything is ok, it will be published.

Review the material

If you are a staff member, you can review the material and let it be visible by everyone!

How to contribute

This project runs Invenio v3.4.0.

Prerequisites

To be able to develop and run out instance you will need the following installed and configured on your system:

Setting environment variables and volumes

Important note: Before run the application you need to:

  • Set the environment variables in a .env file, it must be created. You can see an example in the .env.example file provided.

  • Create the directories used as shared volumes to store the data used by the application executing the command:

      $ pipenv run ./scripts/create-volumes

Production environment

Run

You can use a full-stack production environment using the docker-compose.fare.yml setup, it allows you to run all components in containers. To bring it up you have to execute the following commands:

# Build the application images first
$ ./docker/build-images.sh
$ docker-compose -f docker-compose.fare.yml up -d

Remember to create database tables, search indexes and message queues if it has not already been done:

$ docker-compose -f docker-compose.fare.yml run --rm web-ui ./scripts/setup

Development environment

Installation

First, fire up the database, Elasticsearch, Redis and RabbitMQ:

$ cd my-site/
$ docker-compose -f docker-compose.dev.yml up -d
Creating mysite_cache_1 ... done
Creating mysite_db_1    ... done
Creating mysite_es_1    ... done
Creating mysite_mq_1    ... done

Next, activate the virtualenv of the new project by running:

$ pipenv shell

Finally, install all dependencies, build the JS/CSS assets, create the database tables and create the Elasticsearch indices by running the bootstrap and setup scripts:

(my-site)$ ./scripts/bootstrap
(my-site)$ ./scripts/setup

Run

You can now start the development web server and the background worker for your new instance:

(my-site)$ ./scripts/server
* Environment: development
* Debug mode: on
* Running on https://127.0.0.1:5000/ (Press CTRL+C to quit)

Invenio documentation

Further documentation, related to the framework used and the topics not covered in this guide, can be found here.

Code of conduct

Code of conduct

Reporting a bug and asking help

If you found a bug please report it here opening an issue. Searching help?

Semantic Versioning

Here the semantic versioning we use

Maintenance

Code actually maintained by Open Education Polito. For inquiries, please open an issue and tag @libremente.

Decision record

The decisions regarding the architecture are recorded in the ADR folder. Please visit ADR to know more about the previous decisions.

Logging

Logging is done by invenio_logging module. The log messages are:

current_app.logger.debug('Where am I?')
current_app.logger.info('Hello world!')
current_app.logger.warning('Be carefull with overlogging.')
current_app.logger.error('Connection could not be initialized.')
current_app.logger.exception('You should not divide by zero!')

The file where to write the log messages can be specified setting the variable LOGGING_FS_LOGFILE

Please note

This version works only with python 3.6.x

Authors

The CVS provides detailed info regarding who did what.

License

This code is licensed under a MIT License, v3. See the LICENSE.md file for extended info, and the license files inside each module's repository.