Coder Social home page Coder Social logo

puskunalis / opengamifylms Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 2.47 MB

Gamified Learning Management System

License: MIT License

Makefile 1.55% Dockerfile 0.52% Go 32.72% JavaScript 63.30% HTML 0.75% CSS 1.15%
gamification gamified-learning go minio postgresql react

opengamifylms's Introduction

OpenGamifyLMS

OpenGamifyLMS is an open-source system designed to gamify the employee learning management process. It provides a comprehensive set of features to create, manage, and deliver engaging learning experiences for employees in startups and other organizations.

Features

  • Course, module, and submodule creation
  • Leaderboards to foster competition and motivation
  • Progress tracking to monitor learner advancement
  • Badges and challenges to incentivize learner engagement
  • Quizzes to assess learner knowledge and understanding

Technologies Used

  • Backend: Go
  • Frontend: React
  • Database: PostgreSQL
  • Object Storage: MinIO

Prerequisites

To set up and run OpenGamifyLMS locally, ensure you have the following dependencies installed:

  • Go
  • npm
  • Node.js
  • Docker
  • Docker Compose
  • Kind (Kubernetes in Docker)
  • Helm

Getting Started

  1. Clone the repository:

    git clone https://github.com/puskunalis/opengamifylms.git
    
  2. Navigate to the project directory:

    cd opengamifylms
    
  3. Install dependencies:

    npm install --prefix ./frontend
    
  4. Start the application in two separate terminals:

    make
    
    make frontend
    
  5. Access OpenGamifyLMS through your web browser at http://localhost:3001.

Deployment

To deploy OpenGamifyLMS to a production environment, follow these steps:

  1. Update the values.yaml file in the helm directory to match your deployment requirements.

  2. Run the following command to install the Helm chart in the current cluster:

    helm install opengamifylms ./helm -n opengamifylms --create-namespace
    
  3. OpenGamifyLMS will be deployed using the specified configuration.

Running Tests

End-to-end tests are executed using Cypress, which gets run using Docker Compose. You can run it locally with this command:

make test-e2e

Contributing

Contributing guidelines are available in CONTRIBUTING.md.

Known Limitations / TODO

  • The badge system requires the badge award rules to be described in Go code in the Backend, since badges can be awarded for different actions, it is not easy to develop a way to configure the badge award rules without having to write any programming code. There is a need for an easily configurable way of awarding badges, so that badges can be awarded for different actions.
  • The challenge system is only partially implemented in the Frontend and does not give experience points for completing them. Similarly to badge awarding, creating new challenges without writing code requires extensive configuration options. The challenge system should also decide which challenges to assign to which users, this way implementing an adaptive experience.
  • The new user registration system is incompletely implemented. A deeper analysis of the needs of organisations may lead to the consideration of an authentication system based on OAuth 2.0 that integrates with the centralised identity and access management solutions used by the organisation.
  • Some API paths are not protected. Some API paths are partially protected using the Middleware design template, which can be adapted to protect the rest of the API paths.
  • The instructor user type is currently no different from a regular user, with the instructor role being performed by users of the administrator type. The instructor user type should be separate from the administrator user type and only have privileges to create courses and course materials, and administrators should have an administrator section where they can perform administrative actions -- e.g. modify the details of other users.
  • PostgreSQL and MinIO credentials should be stored as Kubernetes Secret objects and not configured via Helm values.
  • Course illustrations are generated randomly for each course using Lorem Picsum, photos are used from Unsplash. There is no option for the course instructor to upload his/her preferred illustration. The function developed to upload a photo of a course could store photos in the MinIO object repository, in a similar way to how videos of submodule elements are stored.

License

This project is licensed under the MIT License.

opengamifylms's People

Contributors

puskunalis avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.