Inspiration
We wanted to create an app that promoted carpooling culture through easily connecting those who needed a ride and those who were able to provide a ride.
What it does
You are able to create an account and join or create a carpooling group(s). Within the carpooling group, the user is able to create a request for a ride or inform the other users of their driving plans so they can carpool if needed. A user can volunteer to drive to fulfill a request or can sign up to hitch a ride with a driver after reviewing that driver’s route.
How we built it
We split the work into creating a backend, creating the frontend, and then establishing the connections between the backend and frontend.
For the backend, we used a Server to host information in order to interact with different instances of Clients. A network where each Client interacts with all other Clients would be comically inefficient and wasteful of memory. The Server uses Java Sockets in order to establish a method of communication with Clients, passing input and parsed Strings back and forth. We created a RequestHandler class to do the majority of the data processing to apply the concept of abstraction in order to have a better organized program.
For the frontend we used JavaFX to build all the UI and components of the app. Specifically, we designed the app to use different scenes for each of the app’s functionality (logging in, signing up for an account, viewing/adding/joining groups, and the actual carpool rides and requests) and used Buttons, Labels, TextFields, and different panes to represent the components.
Passing back and forth the information required parsing out the input given by the user in instances such as TextFields, integrating a very front-end concept, to back-end computations and analysis.
Challenges we ran into
While we decided to use JavaFX for the UI, none of our team members were proficient or familiar with the syntax. Therefore, there was a big learning curve and it took a while to get the UI up and running. This then delayed the development of the connection between the front and back end and impacted the final functionality of the program.
We were unable to properly figure out how to take the information from the server and update that information to the frontend after a scene change. Because of this, we were unable to get the functionality of requesting and signing up for rides working since we weren’t able to transfer the data between all the scene changes.
Accomplishments that we're proud of
We are proud of being able to create our own local server and have a backend created. Overall, we really stepped outside of our comfort zone with learning new concepts and frameworks we were not proficient in and being able to challenge ourselves.
What we learned
Other than learning about how to write backend and frontend and the connection between the two, we learned that realistic planning is important; we were initially very ambitious with our programs and became overly focused with certain features that were lower priority when considering the overall function of our program. As a result, we allocated less time to essential features than we should have. We learned it’s also really hard to organize a whole app system as we ended up having really disorganized main methods / god objects.
What's next for HoosCar
First is getting the program to work as intended which requires a reorganization of classes and polishing of implementation. When the program’s functionality is improved, the program’s visuals would be next; the current UI looks plain and uninteresting. There are also some system bugs such as not being able to join as many groups as we want and not being able to submit more than six driving requests. If we had more time, we could learn how to use a database to organize the backend information as well.
Log in or sign up for Devpost to join the conversation.