GTFS Application

Scope

Deadline

Finished project was to be done in 7 week period

Deliverables

1 week sprints with new 2 new features added to application each sprint

Learn More

Summary


In a group project consisting of four computer science students, we were required to build an application that could take manage transportations schedules using Google’s GTFS data and create a UI that transport managers and users looking for transportation themselves could use. The user must be able to search for trips, stops, stop times or routes that are used and be able to interact with the data smoothly. The emphasis of the project was on design and tools that help teams communicate and organize code and issues that arise when programming. The application was built in JavaFX with some CSS for styling and FXML for the application structure itself. The final product was a full-scaled application that was built within seven weeks, which ended up being a huge constraint on the project. Being a group project splitting up the workload with this large of a project was challenging at times. My role consisted of heading up specialized features and GUI improvements. 


project analysis


One of the areas I excelled in was figuring out how to get more complicated functionality working without spending too much time on it. One of the main features that I implemented in this application was threading and animations within JavaFX in order to eliminate the freezing of the entire application while the program is loading the large datasets that can take a couple of seconds for the program to parse through. Through this experience, I became aware of many shortcomings with using threads and learned more about its benefits and limitations, one of those limits being that GUI elements cannot be modified from inside a thread, which poses a challenge on informing users about what is happening behind the scenes. Although I had a little bit of experience with data validation and testing going into this project, this project forced me to get more comfortable validating imported data and informing the user of the failure (if there was one). These features then had to be tested, so the team all took part in writing unit tests that could cover as many different scenarios as possible regarding data validation and ensuring that no edge case could crash the program if unusable data was given to the application. For a seven-week project, everything went extremely smooth and we were able to keep our technical debt low throughout the entire process. If we ever were to continue the project, to improve it further, I would definitely want to personally look into what different approaches we could take regarding data structures, to speed up loading times and reduce lag. For future projects to come, I will definitely be using what I learned about threading and the importance of proper data management to build systems that run smoothly and efficiently.