ABUAD LMS (Learning Management System) is a web application that is designed to provide students and teachers with access to high-quality educational resources, facilitate online learning, and foster collaboration and communication within the ABUAD community. It is a part of the ABUAD Smart School Environment Project carried out by Ifeanyi Nneji and Ogunkuade Ayobamidele.
Visit the ABUAD Smart School Environment Repository to learn more details about other aspects of the project.
- 📑 Table Of Contents
- 👋 Introduction
- 💡 Motivation
- 🌟 Features
- 📁 Repository Structure
- 🔧 Tools Used
- 📈 Flowchart
- 📊 Use Case Diagram
- 📷 Screenshots
- 🎥 Demo Video
- 🚀 How to Run ABUAD LMS
- ☁️ Deployment
- 📖 References
- 📃 License
ABUAD LMS (Abuad Learning Management System) is a part of the Abuad Smart School Environment. ABUAD LMS is an innovative digital platform that has been developed to support learning and teaching at Afe Babalola University Ado-Ekiti (ABUAD) in Nigeria. This platform is designed to enhance the educational experience of students and teachers alike, by providing them with access to a wide range of digital tools and resources that can be used to support teaching and learning activities.
The development of the ABUAD LMS was driven by the need to create a more effective and efficient learning environment that leverages digital technology. With the ABUAD LMS, students and teachers can collaborate and communicate more effectively, and learning can take place anytime, anywhere. The platform provides lecturers with an easy-to-use interface for uploading course content, such as videos, documents, and assignments, which can be accessed by students on demand.
The ABUAD LMS is an innovative digital platform that offers a wide range of features for both students and lecturers. Here are some of the key features of the ABUAD LMS:
For Students:
- Access to Course Documents: Students can easily access all the course documents uploaded by their lecturers, including lecture notes, slides, and other supplementary materials.
- View Assignments: Students can view all the assignments given by their lecturers, including due dates and instructions.
- View Attendance Records: Students can view their attendance records for each course, including the dates they attended and the number of hours.
- View Lecture Videos: Students can watch lecture videos uploaded by their lecturers, which can be accessed on demand.
For Lecturers:
- Upload Course Documents: Lecturers can upload course materials, such as lecture notes, slides, and other supplementary materials, to the ABUAD LMS for their students to access.
- Upload Lecture Videos: Lecturers can upload videos of their lectures to the ABUAD LMS, which can be accessed by their students on demand.
- Record Attendance: Lecturers can record attendance using the state-of-the-art facial recognition system, which eliminates the need for manual attendance taking.
- View Attendance Records: Lecturers can view the attendance records for each course they teach, which can help them keep track of student attendance and monitor progress.
For Admins:
In addition to the features available to students and lecturers, the ABUAD LMS also offers a range of features for administrators, which include:
- Manage Users: Administrators can manage users of the ABUAD LMS, including students and lecturers, by adding new users, updating user information, and removing users who are no longer part of the ABUAD community.
- Course Management: Administrators can manage courses offered by the university, including creating new courses, updating course information, and removing courses that are no longer offered.
- Monitor Attendance: Administrators can monitor attendance records for all courses and students, helping to ensure that students are attending classes regularly and meeting attendance requirements.
- System Maintenance: Administrators can perform system maintenance tasks, such as backing up data, updating software, and troubleshooting issues that arise with the ABUAD LMS.
├── app.py
├── configurations
│ ├── config.py
│ ├── extensions.py
│ ├── __init__.py
│ ├── models.py
├── constants.py
├── database.db
├── docker-compose.yml
├── Dockerfile
├── __init__.py
├── init.py
├── requirements.txt
├── templates
│ ├── admin
│ ├── pages
│ ├── reset_password
│ └── static
├── utils.py
└── views
├── custom_errors.py
├── index.py
├── __init__.py
├── lecturer.py
├── login.py
├── logout.py
├── reset_password.py
└── student.py
Some of the key tools used in the development of ABUAD LMS are:
-
HTML: HTML was used to develop the structure and content of the web pages in ABUAD LMS.
-
CSS: CSS was used to style the web pages and enhance the visual appeal of ABUAD LMS.
-
JavaScript: JavaScript was used to add dynamic behavior to the web pages and provide a better user experience.
-
Datatables: Datatables is a plugin used in ABUAD LMS to enable the display of data in a tabular format with advanced features such as searching, filtering, and sorting.
-
Bootstrap: Bootstrap is a front-end framework used in ABUAD LMS to ensure a responsive design and improve the overall look and feel of the application.
-
Python: Python is a programming language used in the development of ABUAD LMS.
-
Flask: Flask is a micro web framework used in ABUAD LMS to develop the web application.
-
Postgres: Postgres is an open-source relational database management system used in ABUAD LMS to store and manage data.
-
SQLite: SQLite is a lightweight relational database management system used in ABUAD LMS for development and testing purposes.
-
Flask_Admin: Flask_Admin is a plugin used in ABUAD LMS to provide a user-friendly interface for managing the database.
-
Flask_Mail: Flask_Mail is a plugin used in ABUAD LMS to enable email functionality such as reset password features.
-
Facial Recognition with Dlib: This is used in the facial recognition attendance system.
Lecturer Page Screenshots
Student Page Screenshots
Admin Page Screenshots
Screenshot | Description |
---|---|
Admin dashboard. | |
View registered Students. | |
View registered Lecturers. | |
View registered admins. | |
Create new students/lecturers. | |
Edit and update user details. |
Password Reset Screenshots
Screenshot | Description |
---|---|
Reset password page. | |
Password reset email sent successfully. | |
Received email page. | |
Reset password button. | |
Change password page. | |
Successful password change notification. |
To run the ABUAD LMS application using Python, follow these steps:
- Clone the repository to your computer.
git clone https://github.com/Nneji123/ABUAD-LMS.git
cd ABUAD-LMS
- Create and activate your virtual environment. For Windows users, you can activate your environment by running the following command in your terminal:
python -m venv env
source env\Scripts\activate
- Set the environment variables required for the application. Create a file named
.env
or edit the.env.example
and add the following environment variables:
# DATABASE AND SERVER CONFIG
POSTGRES = "postgresql://postgres:password@url:port/database" # POST SERVER
SQLITE = "sqlite:///../database.db" # LOCATION OF SQLITE DATABASE
SERVER_NAME="http://127.0.0.1:3000" # CHANGE THIS TO YOUR PRODUCTION SERVER LINK
SERVER_MODE="DEV" # CHANGE TO `PROD` TO ENABLE PRODUCTION READY SETTINGS
SERIAL="secret" # FOR GENERATING EMAIL HASHCODE
# ADMIN DETAILS
ADMIN_USERNAME = "admin"
ADMIN_PASSWORD = "admin"
ADMIN_ROLE = "admin"
IS_ADMIN = True
# DEV SERVER CONFIG
DEV_MAIL_SERVER="sandbox.smtp.mailtrap.io"
DEV_MAIL_PORT=2525
DEV_MAIL_USERNAME=""
DEV_MAIL_PASSWORD=""
DEV_SECRET_KEY=""
DEV_SENDER_EMAIL="" # SHOULD BE THE SAME AS DEV_MAIL_USERNAME
# PROD SERVER CONFIG
PROD_MAIL_SERVER= "smtp.gmail.com"
PROD_MAIL_PORT= 465
PROD_MAIL_USERNAME= ""
PROD_MAIL_PASSWORD= ""
PORD_SECRET_KEY=""
PROD_SENDER_EMAIL=""
Note that you should replace the values of the environment variables with your own server and database settings, as well as your own email credentials.
- Install the required Python packages by running the following command in your terminal:
pip install -r requirements.txt
- Change your directory to the src directory:
cd src
- Initialize the local database by running the following command in your terminal:
python init.py
- Finally, run the application by running the following command in your terminal:
python app.py
Once the application is running, you can visit it in your web browser by going to http://localhost:3000/.
To run the application using Docker, follow these steps:
-
Make sure Docker is installed on your machine.
-
Clone the project repository and navigate to the project directory.
-
Create a file called
.env
in the project root directory and add the required environment variables. -
Build the Docker image using the following command:
docker build -t abuad-lms .
-
Run the Docker container using the following command:
docker run --env-file .env -p 3000:3000 abuad-lms
To run the application using Docker Compose, follow these steps:
- Make sure Docker and Docker Compose are installed on your machine.
- Clone the project repository and navigate to the project directory.
- Create a file called .env in the project root directory and add the required environment variables.
- Build and start the Docker container using the following command:
docker-compose up --build
These steps will start the application in a Docker container, which can be accessed by visiting http://localhost:3000 in a web browser.
To deploy the application using the Railway or Render button, follow these steps:
- Click on the Railway or Render button in the repository to open the deployment platform.
- Sign up or log in to the deployment platform.
- Connect your GitHub account to the deployment platform.
- Choose the repository where the application code is located.
- Configure the deployment settings, such as the name of the application, the deployment region, and the deployment type (e.g., Docker container or static site).
- Deploy the application by clicking on the "Deploy" button.
- Wait for the deployment process to finish. Once it's done, the application will be available at the URL provided by the deployment platform.
Note that the specific steps and options may vary depending on the deployment platform used. It's recommended to check the documentation and tutorials provided by the platform for more detailed instructions on how to deploy the application.
References:
- Abuad LMS. (2023). Retrieved from https://github.com/abuad/lms
- Face Recognition Library. (2023). Retrieved from https://github.com/ageitgey/face_recognition
- Flask. (2023). Retrieved from https://flask.palletsprojects.com/en/2.1.x/
- Flask-Admin. (2023). Retrieved from https://flask-admin.readthedocs.io/en/latest/
- SQLAlchemy. (2023). Retrieved from https://www.sqlalchemy.org/
- Bootstrap. (2023). Retrieved from https://getbootstrap.com/
- OpenCV. (2023). Retrieved from https://opencv.org/
- Akinremi, F. (2020). Building a Simple Flask Web Application with Docker and Kubernetes. Medium. Retrieved from https://medium.com/analytics-vidhya/building-a-simple-flask-web-application-with-docker-and-kubernetes-58439b0c7d3a