Where Is My School Bus?

by Ian McDowell, Class of 2021



Entry #12: For 5/12/2021
The Final Blog Post
That's right. This is my last post for capstone! This has been a really transformative and interesting experience for me.
Something I should have depicted earlier is the below picture. The server client relationship has been fully modeled for sometime, but has never been depicted as it rightfully should have been.


Pictured Above: A descriptive diagram labelling what is happening with client-server communication
Now that all is said and done, and the time winds down I can truly say there have been a lot of lessons learned both bitter and sweet. Despite some hardship, I'm proud of what I was able to learn and accomplish in the time I was given. Especially during such turbulent times.

Thanks again for reading my progress through the semester. Be well!

Entry #11: For 4/18/2021 and 04/25/2021
Rough UI and Server Side Successes
There have been a lot of good changes these past two weeks that my capstone project has gone through. Most notably, we have a working server backend! After getting the exclusive port for use on compsci04, I was able to establish a connection between React-Native and my node.js websocket server side.


Pictured Above: Output from my server console. This shows the server handling two separate requests from my application side, both stemming from a busDriver user.
This was a huge step in the right direction. At this point, there is only one more server side feature that I need to establish. That being a more organized structure to store the users, and then handling the requests for its location. Then I get to work on beautifying the application. Which of course, is one of the best parts. With capstone demos swiftly approaching, I have a lot of work to do!

Looking forward to presenting my progress!

Entry #10: 04/11/2021
Server Communication Implementation
For this week, I was heavily focused on how I could get a user on their device to communicate to a server-side from their device. This is to allow the family users to request the bus' status enroute. So far, it seems I can set up a file that listens on a port of a server. My current plan is to use WebSockets. This file can be reached via my device, the next step is for the file on the server to be able to reach a unique user that is the bus driver, or for the bus driver to update an active script on the server size for the current busride.

I currently can't test the work done for this until I polish up the 'Family' screen. Once that has been taken care of, the Web Socket integration will be complete and I can get to work on making the routes as user friendly as possible. There is going to be a lot of testing ahead to make sure everything is in proper order.

Entry #9: 04/05/2021
Family to Bus Communication
Thanks to John McGorey and his help with JSON file importation to the application side, I Got a couple of big features added this week.

I will be using Moment.js as my time tracking feature for the application side. My current plan is to compare the time from the JSON schedule sent, to the time from the clock I have running which uses Moment.js.


The next step I have to do is to start issuing notifications and requests across the application. The first step to this is some research. Web sockets or Web hooks may be a good solution for the communications I need between users. One of the larger issues of concern moving forward is making sure that however the notifications are handled, the communication is clear, and it all follows good HCI protocols.

Once the notifications are handled, I can look forward to making the application more user friendly and incorporate some system to handle the different user types.

Entry #8: 03/28/2021
JSON & More Server Communication
After some blood, sweat, and tears, I learned I was overcomplicating the issue. My original design used PHP as a medium to facilitate communication between the device and server based file storage. After deepdiving into the React-Native, fetch, and JSON documentation, I learned I could achieve my goal by just listing the location of my json file in the server. This saves me a lot of time and hassle, and also allows me to have a strict format for how each schedule should be formed.

Some other communication in the works is the notification system between bus-driver side and family side. The core functionality of the application. Another stretch goal is to start modeling the UI closer to what I would want the actual app to look like.

For now, it's back to the grindstone. Looking forward to presenting my progress thus far for this Thursday.

Entry #7: 03/21/2021
Server Client Communications Issues
I have come to a bit of an impasse. 'Where's my Shcool Bus' relies heavily on PHP and server-client communication to run properly. After checking several sources and manipulating a fair bit of Javascript and PHP, the Bus Driver side of the app cannot reach where I have the script locally. The current theory is that the application request from the server cannot recognize the static IP address that SNC wifi gives to me.


Pictured Above: Visual description of the Client server issues currently had.
My goal is to test the PHP scripts locally before moving to serverside so I have confirmation they work as intended. The only way forward from here is to face the issue head on and figure out where the misstep is.

Project hurdles aside, I really enjoy PHP and am excited by the potential it offers! Looking forward to exploring more of the language.


Entry #6: 03/14/2021
Database & Administration
I found a lot of answers for my problems from the last week. Using XAMPP, I have begun constructing/testing the backend of my application. So far, I have made a few test scripts with PHP and I have researched and am now testing how React-Native works with PHP. Luckily, I haven't had any issues using fetch in React-Native and it seems to work as intended with my simple scripts. The next step from this point is to properly instantiate and fill the database with meaningful data for my application. For this, I am thinking of using PHPmyadmin which was included with XAMPP. I really enjoy how simplistic and powerful the tool is for managing databases. This of course may change as the project progresses.

There are a lot of moving parts for my application, but with all of the progress made this week, I'm feeling quite good about the state of my project.

Entry #5: 03/07/2021
Backend Business.
One of the most important facets of this project is the user to user communication. Bus drivers, families, and admins will be using different information each schoolday and will communicate with one another in different ways.


Pictured Above: Server & File Structure Boardwork in collaboration with DCP
So now begins the long journey of testing and creating a server-side using PHP. At this point, I will now be creating functions that will revolve around client server communication in regards to each user and any other user types.

Now I just have to balance the work between the front-end interfaces being functional enough for testing, and creating the backend server scripts for those interfaces.

Also, my timeline has been updated to properly reflect the work I am doing.

Entry #4: 02/28/2021
Moving Forward!
I got out of Quarantine/Isolation as of 02/26/2020 at Midnight. If there is one thing I learned from that experience in regards to this project, rest is important!

My latest and greatest development started looking like this...


Tasks Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 Week 10 Week 11 Week 12 Week 13
Project Assigned
Research Period
Environment Setup
Admin side of app
Bus schedule system
Bus Driver side of app
ETA system
Parent/Student side of app
Bug fixing, testing, breaking
Visual overhaul
Tweaks and polishing
Presentation Preparation
...Which is cool. Because I can proudly say I have a bit more to add. This really helps with me getting me motivated. I've found it super helpful in keeping me on task so I can see the whole picture visually rather than conceptually.

I've gotten a lot done and this is a great part of it. A functioning test screen implemented, and a component finished... on paper. Lots of work to do. More to come!

Entry #3: 02/21/2021
Minor Setbacks...
Having tested positive for COVID-19 the day after my second entry, progress has been halted as I recover.
I am on the road to recovery and will be working on this project again soon. I believed I would get more work done in solitude than I would at home, but this sickness made it too difficult to be at my desk for any significant period of time. I decided to dedicate my energy to other class work in these moments.

A friendly reminder, mask up, wash your hands, enjoy the tastes and smells of not having COVID-19. I really miss tasting food.

Entry #2: 02/14/2021
Setting the Foundation.
Now we're picking up some steam. This project primarily runs off of React-Native so there was a little setup to do, but now the project is in working order. It's a humble start, but is nevertheless important.

In terms of the design, everything is starting to come together... so far. Definitely going to need to draw it all out. Back to the drawing board! Going to be using LucidSpark to help organize my thoughts and design details regarding the app.

Entry #1: 02/10/2021
Starting off on the right foot.
This marks the first step into the development of my senior capstone project. The website is a bit bare bones, and all of the 'work' for the app is on a whiteboard, but it feels really good to see the results of a new and exciting start.

The website has a good start but feels a bit clunky and could definitely use some artistic touches. More to come!