This is the Github repo of Preben's norwegian community!
The software consists in a Wordpress landing website, that presents the content of the language courses and how it works. After that, there is the main learning website that uses LearnWorlds as a service.
Each course-level users are divided in groups, that have some live lessons in different days of the week. This logic is external to LearnWorlds, so there was the need to automatize it and make a sort of "wrapper". The software in this Github repo has hence that goal
The admin (or the teachers) log in to an external, made in home, platform. Here, they can see all the courses (gotten from LearnWorlds APIs) and handle the groups for each course. So, they can create/edit/remove groups and enroll/unenroll students from those groups.
There are then some webcomponents that interface with this platform and are shown, after the user is logged in, in the courses' pages. These "widgets" allow the users to see the available groups for a course and to enroll/unenroll from the courses.
Through LearnWorlds web-hooks, if a user unenrolls from a course, he is automatically removed from his group.
Everything was developed with Typescript.
The repositories are:
- pnc-api: The APIs of the project. Made with Node.js and Express. They interface with a MongoDB database and with the LearnWorlds APIs. It also hosts an api-sdk, a client published on npm to interface with the APIs in the frontend code.
- pnc-webapp: The APIs of the project. Made with Vue.js and Vuetify.
- pnc-webcomponents: The webcomponents shown on LearnWorlds. Made with Vue.js and Vuetify.
- pnc-learnworlds-snippets: The snippets that are added to LearnWorlds custom code.
- pnc-deploy: The docker compose and .env.example files for the deploy
- Mongo Atlas MongoDB database for the data
- Npm organization for modules such as the api sdk
- Digital ocean for hosting the software
- Docker and Portainer for the deploy of the containers
- Dockerhub for hosting the docker images
Almost every account is connected to the [email protected] email address