Giter VIP home page Giter VIP logo

viggomode2021 / vig-lms Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 21.8 MB

About VigLMS.org: VigLMS.org is a SAAS learning management system (LMS) that allows teachers to enroll students into classes and manage their grades. Teachers can add assignments and manage/organize their course material. Students can create an account and check their grades, provided that they are enrolled in a class that is in the VigLMS database system. It is the world's first free to use online gradebook.

Home Page: https://viglms.org/login/

Python 21.39% HTML 56.55% CSS 21.49% Dockerfile 0.07% JavaScript 0.51%
sql flask postgresql googlecloud amazonrds

vig-lms's Introduction

Project Title: VigLMS Description: This application VigLMS serves as a basic CRUD gradebook for teachers to utilize to manage their students’ grades and assignments. It also allows for students to create an account to check their grades. It was created with Flask and is backed up by a Postgresql database through psycopg2. The database is an Amazon Web Services RDS instance and the entire application is deployed through Google Cloud. This project makes use of HTML and CSS through the Jinja template, alongside some Bootstrap and custom HTML and CSS. Essentially, VigLMS is an example of a full stack application that showcases core frontend and backend principles. This application initially started as a personal gradebook that I had created for a few of my Spanish classes. However, I wanted to create a gradebook that was usable and adaptable for other educators. The goal was to have teachers create an account for a class, enroll their students, add assignments, and update grades. In my current job as a Spanish teacher, we use PowerSchool to manage grades and take attendance. Although PowerSchool is a very robust application, I was hoping to create a basic, yet somewhat comparable version of it. It dawned on me after watching some tutorials that I could achieve this customizability with Flask’s sessions functionality. Using sessions, I was able to create a register page, login page, and change password page. These pages feed front end HTML form input to the Flask backend, which in turn feeds the input data as parameters into SQL queries that are sent via psycopg2 to the database. The functionality of these pages allow for password hashing (to secure password privacy when passwords are sent to the database) and various logic checks with ‘if/elif/else’ statements in order to authenticate the user to securely proceed. The register page allows a new user to create an account (for free) by submitting some basic information and log in with said information. The session data (username, class name) is carried throughout the various pages on the application and the user can log out at any time. When the user clicks the ‘logout’ in the navbar, they are ‘popped’ out of their session and redirected to the main login page. When the teacher user logs into the app, the app will open to the main page and allow the user to go to the main page, class roster page, assignments page, or logout. The class roster link will bring them to the respective class' enroll page, where they will have either the option to fill out 4 fields in a html form to enroll a student, or just check the class roster. If they decide to check the class roster without enrolling a new student, they will click the 'show class roster' button, which will direct them to a new page that shows a html table replica of what is in the Postgres database. This table is populated with the results pulled from the database through a 'SELECT *' statement run through psycopg2. This is an area where the app demonstrates a 'GET' request. This table also has a red button to 'unenroll student', which will call a 'DELETE' request through psycopg2 and remove the student from the Postgres backend and also update the frontend HTML page so that the student disappears. The user can also update the student grade by filling out the respective input box 'update grade here' with a new grade and clicking the update grade button. This will run an 'UPDATE' query to update the respective student's grade on both the backend (Postgres) and frontend (HTML). This functionality demonstrates a 'PUT/PATCH' request. The link in the navbar that shows ‘my assignments for {class_name}” links to an html page where the user can add assignments to their class. Once an assignment is created, the user can give each student a score for the assignment created. This will ultimately change the average of the students’ grades with a subquery. The user can delete assignments and/or delete specific results (for example, delete the grade that the user assigned to a particular students’ assignment). Provided that a ‘teacher user’ has enrolled a certain student, said student can create an account and check their overall grade, as well as any assignment grades that they have received. For example, if a teacher user enrolled a student named ‘Miguel Santiago’, a student account for said student can be created. The logic of the application checks if the student name is in the system and enrolled in the class they say they are (for example, the teacher enrolled Miguel in a class called ‘Math’). Provided that this matches up, an account can be created for Miguel for him to check what the teacher has input for his grades. Obviously, the main difference is that the student account can only see what the grades are and not alter them. Conclusion: The project's design evolved once I started implementing how the frontend was going to work and operate alongside the backend. My goal is to continue working on this project and make it more robust and customizable. Here is a small list of things to work on for version 2.0: Allow grades to revert back to prior number if a teacher deletes an assignment/result Implement a daily attendance feature Implement a ‘delete account’ function (super important) Fix flash messages to disappear on a timer Add load balancers (if app becomes more popular) Purchase a domain an install SSL certificate for HTTPS access (important for security) Change password via email, instead of secret question Thank you for reading. I hope you find this app intriguing and useful. Feel free to email me at [email protected] with any further questions. -Ryan Viglione

vig-lms's People

Contributors

viggomode2021 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.