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

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.1.21a2.tar.gz (46.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

solid_backend-0.1.21a2-py3-none-any.whl (83.4 kB view details)

Uploaded Python 3

File details

Details for the file solid-backend-0.1.21a2.tar.gz.

File metadata

  • Download URL: solid-backend-0.1.21a2.tar.gz
  • Upload date:
  • Size: 46.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/2.7.18 Linux/5.4.0-74-generic

File hashes

Hashes for solid-backend-0.1.21a2.tar.gz
Algorithm Hash digest
SHA256 43cccc243bd004b9f8fe1a20406a6ffdc77ea74907ac8b1521af96928e76b4fe
MD5 607f07d83f3d58a7fe8f09533203e92d
BLAKE2b-256 d56a295a598052a8e0d5ce3f32d1654c4c5445ba0e5e71de7ca54f2f86ca447d

See more details on using hashes here.

File details

Details for the file solid_backend-0.1.21a2-py3-none-any.whl.

File metadata

  • Download URL: solid_backend-0.1.21a2-py3-none-any.whl
  • Upload date:
  • Size: 83.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/2.7.18 Linux/5.4.0-74-generic

File hashes

Hashes for solid_backend-0.1.21a2-py3-none-any.whl
Algorithm Hash digest
SHA256 a36dfc6e51a5aff14eb0389857da393e748d6af68e5089a4e06819b5fe569f41
MD5 4cfcea78a65e9982f79ad3175d5717b7
BLAKE2b-256 d2bf0130c609d8c3e555fd2f4dcb8e952e73656d96f8c26e9da1fe22b4d3da99

See more details on using hashes here.

Supported by

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