Skip to content

Nneji123/ABUAD-LMS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ABUAD LMS Logo

ABUAD LMS (Learning Management System)

Language Framework HTML CSS Javascript Postgres hosted Docker Gitpod reposize Python Tests

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

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.

πŸ’‘ Motivation

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.

🌟 Features

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.

πŸ“ Repository Structure

β”œβ”€β”€ 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

πŸ”§ Tools Used

Some of the key tools used in the development of ABUAD LMS are:

  1. HTML: HTML was used to develop the structure and content of the web pages in ABUAD LMS.

  2. CSS: CSS was used to style the web pages and enhance the visual appeal of ABUAD LMS.

  3. JavaScript: JavaScript was used to add dynamic behavior to the web pages and provide a better user experience.

  4. 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.

  5. 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.

  6. Python: Python is a programming language used in the development of ABUAD LMS.

  7. Flask: Flask is a micro web framework used in ABUAD LMS to develop the web application.

  8. Postgres: Postgres is an open-source relational database management system used in ABUAD LMS to store and manage data.

  9. SQLite: SQLite is a lightweight relational database management system used in ABUAD LMS for development and testing purposes.

  10. Flask_Admin: Flask_Admin is a plugin used in ABUAD LMS to provide a user-friendly interface for managing the database.

  11. Flask_Mail: Flask_Mail is a plugin used in ABUAD LMS to enable email functionality such as reset password features.

  12. Facial Recognition with Dlib: This is used in the facial recognition attendance system.

πŸ“ˆ Flowchart

Flow Chart

πŸ“Š Use Case Diagram

Use Case Diagram

πŸ“· Screenshots

Lecturer Page Screenshots
Screenshot Description
Lecturer Dashboard The lecturer homepage and dashboard
Course Materials Available list of courses.
Attendance Records Successful File Upload Pop Up Message.
Upload Assignment Register Student Page.
View Assignments Facial Recognition Attendance Page.
Discussion Forum Attendance Report Page.
Grades Management Search for Attendance record by particular date.
Student Page Screenshots
Screenshot Description
Student Dashboard Student Homepage
Course Materials List of courses available to students.
Assignment Submission Course Homepage
Grades List of course documents.
Attendance Record View Course Document with built in PDF Viewer.
Announcements List of available videos for the course.
Course Schedule Play videos with built in video player.
Account Settings View attendance record for course.
Admin Page Screenshots
Screenshot Description
Admin Dashboard Admin dashboard.
User Management View registered Students.
Course Management View registered Lecturers.
Attendance Monitoring View registered admins.
Announcement Management Create new students/lecturers.
System Settings Edit and update user details.
Password Reset Screenshots
Screenshot Description
Password Reset Request Reset password page.
Password Reset Email Password reset email sent successfully.
Password Reset Form Received email page.
Password Reset Confirmation Reset password button.
Password Reset Error Change password page.
Password Reset Success Successful password change notification.

πŸŽ₯ Demo Video

πŸš€ How to Run ABUAD LMS

To run the ABUAD LMS application using Python, follow these steps:

  1. Clone the repository to your computer.
git clone https://github.com/Nneji123/ABUAD-LMS.git
cd ABUAD-LMS
  1. 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
  1. 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.

  1. Install the required Python packages by running the following command in your terminal:

pip install -r requirements.txt

  1. Change your directory to the src directory:

cd src

  1. Initialize the local database by running the following command in your terminal:

python init.py

  1. 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/.

🐳 How to run in Docker and Docker Compose

To run the application using Docker, follow these steps:

  1. Make sure Docker is installed on your machine.

  2. Clone the project repository and navigate to the project directory.

  3. Create a file called .env in the project root directory and add the required environment variables.

  4. Build the Docker image using the following command:

    docker build -t abuad-lms .

  5. 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:

  1. Make sure Docker and Docker Compose are installed on your machine.
  2. Clone the project repository and navigate to the project directory.
  3. Create a file called .env in the project root directory and add the required environment variables.
  4. 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.

☁️ Deployment

To deploy the application using the Railway or Render button, follow these steps:

  1. Click on the Railway or Render button in the repository to open the deployment platform.

Deploy on Railway Deploy on Render

  1. Sign up or log in to the deployment platform.
  2. Connect your GitHub account to the deployment platform.
  3. Choose the repository where the application code is located.
  4. 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).
  5. Deploy the application by clicking on the "Deploy" button.
  6. 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

References:

  1. Abuad LMS. (2023). Retrieved from https://github.com/abuad/lms
  2. Face Recognition Library. (2023). Retrieved from https://github.com/ageitgey/face_recognition
  3. Flask. (2023). Retrieved from https://flask.palletsprojects.com/en/2.1.x/
  4. Flask-Admin. (2023). Retrieved from https://flask-admin.readthedocs.io/en/latest/
  5. SQLAlchemy. (2023). Retrieved from https://www.sqlalchemy.org/
  6. Bootstrap. (2023). Retrieved from https://getbootstrap.com/
  7. OpenCV. (2023). Retrieved from https://opencv.org/
  8. 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

πŸ“ƒ License

MIT

About

ABUAD Learning Management System Developed by Ifeanyi Nneji and Ogunkuade Ayobamidele as part of the ABUAD Smart School Environment Project.

Topics

Resources

License

Stars

Watchers

Forks