===============================================================
The Integrated Registration Tracking System (IRTS) serves as the storage hub for the academic credentials of students in an educational institution, such as a college. Students may access their own course and grade history and choose courses in which to enroll. Employees may access multiple data points about any student's academic progress (post-Admission) and eligibility for graduation.
- ![Brave](https://img.shields.io/badge/Brave-FB542B?style=for-the-badge&logo=Brave&logoColor=white)
- CSS Flexbox
- Cypress
- ![Django](https://img.shields.io/badge/DJANGO-REST-ff1709?style=for-the-badge&logo=django&logoColor=white&color=ff1709&labelColor=gray)
- ![DjangoREST](https://img.shields.io/badge/django-%23092E20.svg?style=for-the-badge&logo=django&logoColor=white) DjangoREST
- ![MySQL](https://img.shields.io/badge/mysql-%2300f.svg?style=for-the-badge&logo=mysql&logoColor=white)
- ![Postman](https://img.shields.io/badge/Postman-FF6C37?style=for-the-badge&logo=postman&logoColor=white)
- ![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)
- ![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB)
I submitted the Capstone project proposal on Thursday, November 17, 2022. It was approved on Thursday, November 17, 2022.
The 15-day development sprint ran from Thursday, November 17, 2022 through Wednesday, December 14, 2022.
I presented the project live on Zoom on Friday, December 16, 2022.
The User Stories for this app were derived from my recollection of the functions that I used to use in registration systems as a Registrar’s office employee. The intention was to re-create the system and build accessibility features into the design.
- IRTS Capstone wireframe screens.jpg
- IRTS Capstone wireframe user flows.png
- IRTS Capstone ERD.png
Technical challenge-- Creating the differentiated user experience. Giving the employee access to student records concealing the student path from the employee path.
Combining calculations to trigger events such as updated eligibility status.
Displaying or concealing information based on user type to create a differentiated user experience.
- Paths for Logged-In User and Non-Logged-In
Appearance of the Search Bar and Log-out button
One example is that the search bar is only available to logged-in users. For this sprint, the Search form field is simulated. In an upcoming sprint, the Search form will be fully functional.
-
{user ? ( <> Search Logout ) : ( Integrated Registration Tracking System ) }
-
Paths for Employee and Student
Separate Menu options
The black, bold text palette and the gray and violet color palette is high contrast for low vision users and Web Content Accessibility Guidelines (WCAG) 1.4.3 compliant.
The button change of shape and color is WCAG compliant serves sighted users.
The quick navigation to top of page is compliant with WCAG 2.4.1.
- Clone this repo from Github
- Download and install Visual Studio Code
- cd backend
- pipenv shell
- python manage.py runserver
- clone the repo
- npx create-react-app
- IRTS to run Node
- cd frontend
- npm start
- Download and install MySQL
- Double-click the file, \IRTS_Capstone\package-lock.json
- Download and install Postman
- Double-click the file, \IRTS_Capstone\student data2022.sql
- Download and install Cypress
- Double-click the file, \IRTS_Capstone\cypress\e2e\App.cy.js"
Aspects of coding in which I want to further my learning and improve.
-
Create endpoints for display links. Add new screens to expand the information to which the links allude.
-
The Skip links, positioned at the bottom of a page will allow logged-in users to navigate to the top of a page with one click.
The Search bar will allow students to quickly find courses, locations, and teachers with relevant search terms.
The same bar will allow employees to quickly find courses, locations, and teachers and also students with relevant search terms.
-
Building a delete function so that an Employee may remove a graded course from the student's transcript. This will trigger a re-calculation of the student's GPA and credit totals.
These are the subfolder directories for all subsequent endpoints.
-
URL for users with administrative privileges.
-
Subfolder for custom endpoints related to user data as employee or student.
http://127.0.0.1:8000/api/auth/
-
Subfolder for custom endpoints related to courses in the catalog.
http://127.0.0.1:8000/api/courses/
-
Subfolder of custom endpoints for the joining of student objects to the courses in which they are enrolled.
http://127.0.0.1:8000/api/courses/
Person objects can be either students or employees.
-
A logged-in student may view his/her own current data on the Transcript page.
http://127.0.0.1:8000/api/auth/get\_current\_credits//
@api_view(['GET']) def get_current_credits(request, user_id): student_object = User.objects.get(id=user_id) passed_courses = StudentCourse.objects.filter(user_id=user_id).exclude(credits_received=0) sum_of_credits = 0 for passed_course in passed_courses: sum_of_credits += passed_course.credits_received return Response(sum_of_credits)
-
A logged-in employee may calculate the selected student’s data and update the database via the FindStudentCourse page.
http://127.0.0.1:8000/api/auth/student\_graduation\_eligibility//
-
A logged-in employee may view a list of students in the database on the StudentDirectory page.
http://127.0.0.1:8000/api/auth/student\_directory/
-
A logged-in employee may view the list of students meeting the minimum graduation criteria of 128 credits and 3.0 GPA.
http://127.0.0.1:8000/api/auth/grad\_ready\_candidates/
-
A registered student or employee may log-in with a token.
http://127.0.0.1:8000/api/auth/login/
-
For Postman API testing. A user registers as a student or employee in the system.
http://127.0.0.1:8000/api/auth/register/
-
A logged-in student may view his/her own current data on the Transcript page.
http://127.0.0.1:8000/api/auth/get\_current\_semester//
@api_view(['GET']) def get_current_semester(request, user_id): student_object = User.objects.get(id=user_id) passed_courses = StudentCourse.objects.filter(user_id=user_id).exclude(credits_received=0) sum_of_credits = 0 for passed_course in passed_courses: sum_of_credits += passed_course.credits_received semester=(sum_of_credits//16)+1 return Response(semester)
-
A logged-in student may view his/her own current data on the Transcript page.
http://127.0.0.1:8000/api/auth/get\_current\_gpa//
@api_view(['GET']) def get_current_gpa(request, user_id): student_object = User.objects.get(id=user_id) graded_courses = StudentCourse.objects.filter(user_id=user_id).exclude(grade_received=0) sum_of_grades = 0 for grade in graded_courses: sum_of_grades += grade.grade_received gpa = sum_of_grades/len(graded_courses) return Response(gpa)
Courses contain credit values and semester levels. These objects fill the catalog
-
A logged-in employee may create a course via the AddCourses page.
http://127.0.0.1:8000/api/courses/post\_create\_courses/
@api_view(['POST']) @permission_classes([IsAuthenticated]) def post_create_courses(request): """api/courses/post_create_courses/ """ serializer = CourseSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
-
A logged-in employee may delete a course via the AddCourses page.
http://127.0.0.1:8000/api/courses/delete\_courses//
-
Displays all courses of a logged-in student at their current semester level on the AvailableCourses page.
http://127.0.0.1:8000/api/courses/courses\_available/
Courses in which the student is enrolled
-
Allows a logged-in student placement into a course via the “enroll” button on the AvailableCourses page.
http://127.0.0.1:8000/api/student\_courses/post\_student\_into\_courses/
-
Displays all courses of a logged-in employee for a student selected via the FindStudentCourses page.
http://127.0.0.1:8000/api/student\_courses/employee\_gets\_studentcourses//
-
Displays all courses of a logged-in student on the Transcript page.
http://127.0.0.1:8000/api/student\_courses/get\_transcript/
-
Displays all courses into which a logged-in student has clicked “enroll” from the menu of options on the AvailableCourses page.
http://127.0.0.1:8000/api/student\_courses/get\_scheduled\_courses/
-
A logged-in employee may apply a grade to the specific course or a specific student via the GradeCourse page.
http://127.0.0.1:8000/api/student\_courses/put\_grade\_course\_object//
-
A logged-in student may delete a course via the “disenroll” button on the ScheduledCourses page.
http://127.0.0.1:8000/api/student\_courses/disenrolls\_course//