A Learning Management System is developed using Laravel PHP Framework, React JavaScript UI Library, Alpine JavaScript Framework, and Tailwind CSS Framework mainly.
Laravel Framework is used to implement and develop an administration panel and OAuth 2.0 based API. The API provides secure access to the server system by various types of client applications including a React app called "Penpan". Penpan provides an environment for taking exams and studying. The administration panel is used by the various roles existing in a complex learning and publishing organization such as education publishers, their branches and channels, their various personnel, teachers, students and their parents with different permissions and access levels in the system.
MySQL relational database system is used for storing the core data. MongoDB NoSQL database system is used for logging the events and data changes in the system. Also Redis NoSQL database system is used for creating and processing the queues. Queues are used in logging and sending notifications.
The user interface of the administration panel is developed using Tailwind CSS Framework and Alpine JavaScript Framework. Also Vite.js tools are used for frontend development of the administration panel.
"Penpan" and other client apps are developed using React JavaScript UI library, some of its popular components, and also some other required and useful JavaScript modules or libraries. Penpan app provides an environment for creating or displaying book and exam pages, drawing, zooming, taking exams, and viewing the exam results and their related statistics.
This system has been designed and architected to handle and manage complex learning processes which involve various types of entities and their relations. These entities include Gains, Contents, Live Lessons, Study Programs, Learning Media including Videos and PDFs, Exam Booklets, Question Booklets, External Exams, Homeworks, Learning Packages, University Programs, and etc.
Gains and Contents are fundamental concepts in this learning management system. Contents can be considered as learning areas which can be narrowed down and they are from different types that are Subjects, Units, Lessons, Classes, and General Contents. Each content can be divided into some smaller contents which refer to more specific learning areas. Contents and their structure depends on the learning or education organization itself and therefore can vary among them. But learning gains are standard learning areas and one base gain must be assigned to each content. By such an assigning, it is cleared to which learning gain that content contributes.
Learning process is run by participating in Live Lessons, studying learning media such as Videos and PDF documents, taking exams including Exam Booklets, Question Booklets, and External Exams, or doing various types of Homeworks. Also, learning process is conducted by study plans or programs prepared specially for each student according to the results of their activities including their exam results.
Live Lessons are created by specifying the main content they are related to, and then they can be scheduled on a calendar for various date and times with various teachers and their assistants who will present those live lessons. Then the teachers, their assistants and the invited or subscribed students can enter the live lessons when the time is on.
Various types learning media including PDF documents and Videos can be created in the system.
Exam Booklets are created in the system by converting Exam Booklet PDF files to a set of image exam pages and then specifying the various parts of those image pages such as the questions and the answer parts by pixel coordination specification of their left top and right bottom points. By the way, all the question and subject parts of an Exam Booklet Pages are converted to item data including their coordination which are stored in the database. So, each exam booklet will have a number of pages and each page will have several question or subject items which data are stored in the database separately. Then the exam booklet is displayed to the users of Penpan App on which they can answer to the questions of the exam booklet and then get the result of their exam individually.
Question Booklets are created by automatic or manual selection of various items from various pages of one or more exam booklets and coherent organizing of them within a number of pages in the PenPan App which can be answered by the Panpan users for taking exams and getting the results.
Various types of homeworks can be created in the system including study homeworks as a PDF document or a video, exam booklet, or question booklet. Then, those homeworks can be given to the students individually or to the all students of a class overally.
"PenPan" App provides a user interface for displaying Exam Booklets and Question Booklets that some of them are also associated with the homeworks given to the students. Students can use PenPan App to take the exam, finish it and then get and view the exam results immediately after finishing the exam.
External exams are exams that are taken physically by distributing optic forms among students. The students will use their pencil during the exam to fill those optic forms. Then those optic forms have to be read automatically so that the answers are extracted and the score of the students and the results are computed and stored in the database. The excel based definition of external exams including their name, the examined lessons, and the correct answer and examined gain of their questions can be imported into the system. Then the correspondant optic form can be attached to each external exam as an image, and the pixel coordination of various parts of the optic form can be specified on the provided user interface by drag and drop. Then, these pixel coordinations can be used for image processing of the uploaded scanned optic forms filled by the student to extract the student answers and compute the results of the external exam including the student score.
Packages can be created in the system.
Users of the system are organized in organizations that each one of them includes a main manager who represents an education or publisher organization, several branch managers who represent and manage the branches of that organization, the managers who represent various types of channel or broker dealers, the personnel and teachers and students of those branches, the parents of those students, and system administrators who can manage all the entities belonging to those organizations and the system itself. Also the classes and departments of the organizations can be created in the system.
The universities, university education programs, and their related data can be created in the system. University program data can be used for qualification related or study plan computations. The lessons and schools can also be created in the system. Then the school of each student can be specified. Based on the lessons and packages, several study parameters can be defined and created. Then according to education program data and based on study parameters and existing packages, complex study plans are computed for different students with different exam results.
A lot of permissions have been defined in the system for each action, including view, add, update, and delete. These actions can be performed on each object such as exam booklet and question booklet. For example, "update exam" is a permission name for updating an exam booklet. An unlimited number of roles can be created in the system such as customer, branch, report manager, and etc, and permissions can be assigned to each role. Several roles can be assigned to each user, and the user will be authorized to do action in the system based on the permissions they have been given through their roles.
The events of creating, updating, or deleting all important entity data are automatically logged in the system and the log data are stored in a MongoDB database. Such logs show which users at what time have changed which part of entity data in the system and what was the previous value of those data fields.