The goal of this project was to develop a gamified personal finance application that runs locally on a host port of the user's PC and is accessible in a browser window. The application sought to incorporate the main personal finance tools found among market-leading applications as well as utilise gamification techniques that have not yet been introduced to main stream personal finance systems but have been heavily used in other industries. Application robustness to unexpected usage, security and usability, were key objectives during the application development to enhance the user’s experience as much as possible.
The application's main objectives were achieved through the implementation of a client-server architecture split into database, application and client layers. The database layer was developed using a MySQL relational database management system deployed remotely on an Amazon RDS server. The application layer was implemented using the Spring Boot extension for Java and followed the MVC design pattern. The client layer facilitated user interaction with the program through Thymeleaf templates, written in HTML, CSS, and Javascript. The communication of user information between the layers was handled automatically at application runtime using developer libraries as dependencies.
The application was manually tested and results showed that the application objectives were achieved.
The Applications specification has been greatly detailed as part of my Masters degree dissertation an is viewable at the following link: https://drive.google.com/file/d/1tD8M5AtLCkepPBHn3y83V73M0MhQOfaJ/view?usp=drive_link
The testing plan devised for the personal finance application was tailored to the functional and non-functional requirements of the application. The functional requirements that shaped the testing were: user account creation and deletion, login and sign out, the support of user financial accounts including transaction tracking, facilitating the tracking of reoccurring payments and investments, budget and savings management, admin controls, as well as the streaks and achievement system. The non-functional requirements involved were security of sensitive user financial user information, usability with regards to application navigation and correctness, performance with regards to page load time and load handling, and code quality. Black box testing was utilised to ensure that all the above targets were met. Other methods of testing such as automated testing using J-unit were not used for two main reasons: the first being the added time requirements and the second being that the database had to be dynamically updated throughout development requiring the constant modification of the test cases. With more time, an automatic solution would have ideally been implemented throughout the application development.
To run the application the user must ensure they have at least Java/JDK version 17.0.8.1 downloaded on their PC and access to a web browser. The application can be run in one of two ways. The first being by downloading the Gfinance/application file and opening it an IDE. From here the user can run the application by selecting and running the src/main/java/com/gfinance/application/Application.java file. The second way of doing so is by downloading the maven build tool and running the application from the command line. After downloading maven, the user must open a terminal and move into the Gfinance/application directory. From here they must run the following sequence of commands (the bellow commands are used for Linux systems but tutorials for other operating systems can easily be found online): • mvn package clean • mvn package • java -jar target/application-0.0.1-SNAPSHOT.jar It is important to note that when running the application, you may have the error stating that the local port 8080 is already in use. Tutorials to kill any active processes on this port can easily be found online depending on your operating system. Unfortunately, the Amazon RDS sever is part of an one year free tier subscription meaning that connection to the database will fail from August 2024 onward, causing the application to crash. Once the application is running the “Started Application in...” message should be displayed to the terminal/IDE. The user must then navigate to a bowser window with an incognito tab being ideal. From here they must enter the localhost:8080 URL and the user interface login page will be displayed in which they can now use the application.
Once the application is running in the browser, the user can either create their own account or user the “tom” and “admin” usernames with the password “test123” to play around with user and admin features respectively (the settings page for admins has additional options). Specifically, the “tom” user has financial data between the last week of august 2023 and the first week of September 2023.