Skip to content

An e-Learning app for teachers, students and parents. It provides courses for students and analytics for teachers and parents

License

Notifications You must be signed in to change notification settings

GitauHarrison/somasoma-eLearning-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Open Issues GitHub Closed Issues GitHub Pull Request Open GitHub Pull Request Closed GitHub forks GitHub Stars

somaSoma eLearning Application

This is a sample eLearning application used to demonstrate how interactive virtual classes can take place. The application users are teacher, student and parent. There is also an admin user who has some super powers in the application.

Student Dashboard

During this iteration, I came across an intially insummountable challenge of authenticating multiple users of the application. Everything else worked, and still works, as I had envinsioned, except the proper authentication of users. Later on, I learnt about Joined Table Inheritance. This solved my problem. However, given how far I had gone with this app, I found it too cumbersome to fix the database issues. Instead, I opted to create a new one (Link to new somaSOMA Repo | Live App).

Table of Contents

Background

In a setting where there are learners and there are teachers (this can be in a formal school setting, home schooling, and even at the workplace) proper management of the learning process plays a big role to get the best outcome. Having been on both ends of the process, I have developed some basic understanding of what makes learning effective.

  • Repetitive tasks need to be automated to free the providers so that they can work on something else more productive
  • Quality control is a big challenge, and finding or creating a system that automates quality control is critical to the success of an enterprise. This includes:
    • Standardized learning resources
    • Customized learning reasources
    • Automated and organic performance reporting
    • Assessments
  • A learning platform needs to be as engaging as it can possibly get. It should be alive with new interesting content, hearty converstations, community, peer reviews et cetera
  • Having all the necessary features that make learning possible is a big deal. Rather than get out of the platform to access, say a video conferencing facility, integrating one into the platform makes the learning process feel like a unit

Overview

The application is built into two broad categories:

  • Website
    • General information about course offerings
    • Payment for course offerings
    • Registration of students and their parents
    • Public events
    • Blog articles
    • Anonymous user can leave comments on blog articles

  • eLearning Application
    • Only accessible upon payment and full parent and student registration
    • Login details sent to parents and students via email
    • Students can learn their courses here
    • Parents can view student progress
    • Teachers can create courses and manage students

Users

These are the custom roles and responsibilites of the users in the application:

Admin

  • Maintains the application
    • Registers teachers
    • The only one who can delete teacher, parent and student accounts
    • Can see all the registration details of teachers, parents and students
  • Manages the content used by anonymous users of the application
    • Update course offerings
    • Comments moderation on student stories
    • Student stories

Comimg soon...

  • Can see the usage statistics of the application by:
    • Teachers
    • Parents
    • Students

Teacher

  • General abilities:
    • Can explore the application to find and follow other teachers
    • Can see list of all students enrolled for the course they will be teaching
    • Can view individual student's profile:
      • Personal registration details
      • Student's individual comments in the eLearning community
      • Student's learning analytics
    • Can only view what all students say in the eLearning community

  • Manages individual lessons:
    • Provides overview of course content
    • Create lesson chapters for a course they registered for
    • Can update course table of contents on the go
    • Creates lesson objectives
    • Creates learning objectives per chapter for each student
    • Creates quizzes for each chapter
    • Creates overall quiz for the course

  • Student management:
    • Moderation of student's comments in each course chapter
    • Assesses student's achievements in each course chapter (automatic by the application)
    • Assesses student's achievements in the overall course (automatic by the application)

  • Event Management
    • Teacher can create (and delete) events for students and the general public to attend

  • Blog Management
    • Teacher can only create blogs seen in the blogs page
    • Teacher can allow the blog created to be posted in the public blog page of the application
    • Only the admin can delete these blogs written by teachers

Student

  • Course (resitricted to the course they registered for)
    • Can enrol for only one course at a time
    • Can do the overall quiz for the enrolled course
    • Can post comments in each course chapter

  • General
    • Can explore all other students in the application
    • Can follow or unfollow other students
    • Can view individual student's profile:
      • Personal registration details
      • Student's individual comments in the eLearning community

  • Learning Analytics
    • Can view their own learning analytics:
      • Each chapter's learning objectives
      • Each chapter's quiz results
      • Overall course quiz results

Parent

Coming soon...

Features

  • Student/Parent/Teacher/Admin registration and authentication
  • Teacher/Admin authorization to create courses, manage students, and update application content
  • Two-factor authentication

  • Email notifications of new registrations and comments posted
  • Credit card payment
  • Scheduling for virtual classes
  • Comment moderation
  • Localhost testing on another device
  • Basic email validation
  • Beautiful phone number fields
  • Profile popup on username:hover
  • Sending and receiving private messages
  • User notifications when they receive private messages
  • Restriction of access to other lesson chapters if threshold of lesson objectives achieved is not met (80%)

Comming soon:

  • Video conferencing facility
  • Live language translation
  • Data visualization of student performance
  • Markdown editing in forms
  • Google reCaptcha on forms for extra security aganist spam
  • Interactive tables (sorting, searching and pagination)

Tools Used

  • Python for programming
  • Flask for web development
  • SQLAlchemy for database management
  • Bootstrap for styling and cross-browser responsiveness
  • Flask-Moment for date and time formatting
  • Flask-WTF for form management
  • Flask-Mail for email notifications
  • Flask-Login to manage user sessions
  • Flask-Migrate to manage database migrations
  • Stripe API for credit card payment (test mode)
  • Twilio Verify API for two-factor authentication
  • Ngrok for localhost testing
  • Email validator for email addresses
  • Phonenumber package for phone number formatting
  • Python-dotenv to access environment variables
  • DatatableJS for interactive tables
  • Flask Pagedown for markdown editing
  • Jquery and Ajax for profile popup and new message notification
  • Google reCaptcha for extra security aganist spam
  • Calendly for scheduling virtual classes
  • ChartJS for data visualization

License

License: MIT

Application Design

This application is currently on its second iteration. Over the months, I have reconsidered the design of the application and have added some new features.

Kindly note that the current application may be miles ahead of the design seen in the latest version. During development, I may have added or discarded some things as the idea of the final application grows.

Deployment

Contributors

GitHub Contributors

Testing the Application Locally

  • Clone this repo:

    $ git clone git@github.com:GitauHarrison/somasoma-eLearning-app.git
  • Move into the cloned directory:

    $ cd somasoma-eLearning-app
  • Create and activate your virtual environment:

    $ mkvirtualenv somasoma-elearning # I am using virtualenvwrapper
  • Install project dependencies within your active virtual environment:

    (somasoma-elearning)$ pip3 install -r requirements.txt
  • Environment variables:

    • Create a file called .env in the root directory of the project
      (somasoma-elearning)$ touch .env
    • Add the following lines to the file as seen in .env-template:
      SECRET_KEY=
      TWILIO_ACCOUNT_SID=
      TWILIO_AUTH_TOKEN=
      TWILIO_VERIFY_SERVICE_ID=
      MAIL_SERVER=
      MAIL_PORT=
      MAIL_USE_TLS=
      MAIL_USERNAME=
      MAIL_PASSWORD=
      ADMINS=
      STRIPE_SECRET_KEY=
      STRIPE_PUBLISHABLE_KEY=
      STRIPE_WEBHOOK_SECRET=
      UPLOAD_PATH=
    • I am using Twilio Verify API and Stripe. Learn how to use them using the guides below:
  • Start the flask server:

    (somasoma-elearning)$ flask run
  • Access the application on http://127.0.0.1:5000/

Using the Application

References

Big of an application, I have used several technologies to add features and put everything together. I have taken a note of some of these things and you can check them out for yourself to learn more.

  1. Starting A Flask Server
  2. Uploading files to a flask database
  3. Profile popup on hover
  4. Private messaging and user notifications
  5. Deployment on Heroku
  6. Deployment on Docker
  7. Deployment on Linode
  8. Comment moderation
  9. Two-factor authentication
  10. Beautiful and interactive tables
  11. Localhost testing
  12. Markdown editing in forms
  13. Stripe integration
  14. Web form protection using captcha

forthebadge forthebadge forthebadge forthebadge forthebadge

About

An e-Learning app for teachers, students and parents. It provides courses for students and analytics for teachers and parents

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages