Skip to main content

Clean Django app for e-learning application with...

Project description

S.O.L.I.D.-Backend

Code style: black

What is S.O.L.I.D.?

The project's name is an acronym for Systematic Object-Learning and Identification, which is the purpose of this pluggable django app. It is here to provide a solid (hehe - :D) foundation for future eLearning apps. During the creation of two eLearning apps at Goethe University Frankfurt we figured out that a lot of disciplines require students to learn how to systematically analyse and classify certain objects. Those objects might be hand-samples of minerals, stones, stuffed animals, paintings or plants, mostly stored in archives with limited access - or none at all. To prevent us from repeating all steps in the creation of a back- and frontend, we focused on the question "Which components will all these apps have in common?" and this package is what we came up with. In order to tackle the problem of limited access to hand-samples, we need to store and process high-definition images with the capability of a zoom feature to deliver HD images on any kind of device. Furthermore, we need a way to arrange the hand-samples in a structured way to provide the core feature. But that's not it. eLearning does not solely consist of content distribution. So we also thought of a glossary which the students have at hand without the need to refer to the lecture notes. Another module to display miscellaneous content is the slideshow feature which dombines text and image on separate pages. Beyond that, we implemented a quiz in order to give students the opportunity to evaluate their current level of understanding. To top it off, we figured it might be useful to display messages to communicate with our users. Messages can inform about updates, events in the context of a lecture, provide fun facts or make up an advent calender with daily tasks or puzzles. A contact form implementation provides a communication in the other direction.

So what does S.O.L.I.D provide in short:

  • A generic way to set up database models which can be structured in a hierarchical tree.
  • A simple way to store high-definition images which provides automatic creation of DZI-files for the usage of OpenSeadragon
  • A Quiz-system with a variety of Question types.
  • A Glossary to provide subject-specific terminology.
  • A Message system which can be utilized in various ways.
  • A Slideshow system to provide content in a presentation style.
  • A Feedback form to facilitate bug reports and questions. So if you are looking to build the backend of an eLearning app, you came to the right place. For inspiration or just to see what it looks like to use solid-backend in the end have a look at geomat-backendand/or dive-backend. If you are also interested in the Frontend: We also have an Angular package which can be found here and which is the foundation of the corresponding apps under geomat.uni-frankfurt.de and dive.uni-frankfurt.de

Get started

Requirements for this package are:

  • Django >3.0.0
  • Djangorestframework 3.11.0
  • django-mptt 0.11.0
  • pillow 7.1.2
  • django-cleanup 4.0.0
  • psycopg2-binary 2.8.5
  • django-taggit 1.5.1

Psycopg2 is important because we are using PostgreSQL specific databasefields. This means that you are also required to use a PostgreSQL database.

Installation

The solid-backend package is distributed via PyPi so you can simply install it via

pip install solid-backend

Add the apps to your INSTALLED_APPS for a bare minimum functionality

settings.py

INSTALLED_APPS = [
...,
"solid_backend.content",
"solid_backend.photograph",

]

or all apps

settings.py

INSTALLED_APPS = [
	"solid_backend.contact",
	"solid_backend.content",
	"solid_backend.glossary",
	"solid_backend.message",
	"solid_backend.quiz",
	"solid_backend.slideshow",
	"solid_backend.photograph",
]

Afterwards, don't forget to add the url's to your url-config. Here, again, you can either decide which urls to include or include all of them:

Specific urls:

urls.py

urlpatterns = [
	...,
	url(r"", include("solid_backend.content.urls"), name="content"),
	url(r"", include("solid_backend.message.urls"), name="message"),
	url(r"", include("solid_backend.photograph.urls"), name="photograph"),

]

All urls:

	urls.py

urlpatterns = [
	...,
	url("", include("solid_backend.urls")),
	
]

After this you are ready to run the migrations and you are good to go.

Documentation

Documentation is available here. The Documentation is currently only available in german. If you are a non-german speaker and want to know more about something feel free to contact us directly via mail and we will figure it out.

Coverage

Coming soon...

Try it out and local development

For a How-To guide see the README in the sample_project directory.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

solid_backend-0.3.5.tar.gz (54.7 kB view details)

Uploaded Source

Built Distribution

solid_backend-0.3.5-py3-none-any.whl (96.7 kB view details)

Uploaded Python 3

File details

Details for the file solid_backend-0.3.5.tar.gz.

File metadata

  • Download URL: solid_backend-0.3.5.tar.gz
  • Upload date:
  • Size: 54.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.8.10 Linux/5.14.0-1059-oem

File hashes

Hashes for solid_backend-0.3.5.tar.gz
Algorithm Hash digest
SHA256 7648653d981b8bcd91f8238cc1597a3c9cc476edfdef927f29249cba114e3944
MD5 a34dae80c81cfa9184d0bb42d36a1e02
BLAKE2b-256 d22be9a9b333bb6e796ea0bc85ada9dba37980beb8e57f09f44c5f385d210f26

See more details on using hashes here.

File details

Details for the file solid_backend-0.3.5-py3-none-any.whl.

File metadata

  • Download URL: solid_backend-0.3.5-py3-none-any.whl
  • Upload date:
  • Size: 96.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.8.10 Linux/5.14.0-1059-oem

File hashes

Hashes for solid_backend-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 65ce684e0978ada757e84871dfde9fc7900610cad9742f862e256a1742a93020
MD5 46be8c635494bd915c6ef5d81c6bd68c
BLAKE2b-256 dfcd8faea9b1398baad092da55aaba0fd0195a614724b7501dd6d7dc5aff6f93

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page