Step 5 – Future

During the last week of school for the attendees of IntelliChoice, we plan to hold a small testing event with the Ethiopia Branch nearby in Garland, Texas. With the help of this test, we will be able to identify any bugs and functionality problems early on that could impede the transition of every other branch in Texas and Arizona. Any bugs found with the Ethiopian branch will be handled by the initial EPICS team! After the transition of the other branches, a new Epics team will carry on the work and complete online learning modules, one-on-one online tutoring, and a statistics page using the data gained from attendance percentages.

Step 3 – Attendance

Our second main deliverable for the improvement of the Intellichoice website was the addition of an online attendance system for the different Intellichoice branches to use. Initially, all recording of attendance was with pen and paper which then had to be transferred by hand onto a CSV File. This process proved to be sluggish and inefficient, causing any form of data collection to be a strain on the volunteers. Branch managers are volunteering their time to help kids learn math, so it was our job to allow them to focus solely on that. With the addition of this attendance system, every student can have a working account with an attendance record that is easily accessed through the MongoDataBase.
Here you can see a simple video of the easy checklist and sorting functions to allow for an effortless system of finding and recording all students who arrive at the branch:


All data is easily accessible by the branch manager, so any corrections to past attendance if something is wrong or incorrect can be done on-site without having to contact a website administrator:

Step 2 – File Cleanup

One of the things we have done for this project is consider our code quality. We inherited a decently hefty codebase that was complicated and not well documented. One of the things that we ran into was that the main server code was stored entirely in a file called “index.js”: all two-thousand lines of it.

This really was not optimal to work in.

We decided, then, that this would need a change. We decided on a structure where the files for the website itself would be served in a different file, the API calls would go into their own directory structure with many files by category, and commonly used functions would be moved to their own files. All these files would then be required() into the main server file so that the functionality would not change. Our users would see no difference aside from a minor speedup, but new developers to the project would have a much easier time doing their development and taking knowledge of our codebase.

Step 1 – Registration

Over the past month, along with many different features, we have had one goal for the main improvement of the website and the general goal of our group. Before today, registration of students throughout all of the branches was scattered and mixed. Correct and accurate data is extremely important not just because of support for the student attendance program soon to be rolled out, but to support statistics of volunteer/student ratio to allow for simplified allocation of resources.
Main features completed to support this is full data modification access for managers of branches to fix address, email, and name info of students and parents, a list of active students on the branch for managers to view, popups when a manager has pending new students, and managers ability to easily register students on-site.
Next step: The Attendance System!

Bug Fixing and Learning Polymer

Getting dropped into the middle of a work-in-progress can be one of the hardest things in CS. Besides having to learn the language, you also need to learn the structural setup of the code done by the person before you in order to understand what you are working with. So far, these first couple weeks have been all about learning the basics of Polymer’s HTML and JavaScript! We have split into sub-groups and have been working on bugs throughout the website as well as improving the efficiency of the user’s experience.