See also: Project Proposal
GCU's Student Housing Portal seems to lack a way for students to determine their compatibility as roommates before selecting their housing. This project seeks to simulate an improvement to the existing portal by allowing a user to view other users and their profile information before making housing decisions.
See also: Project Requirements
This application supports the following high-level functional requirements
- Login and Registration
- User Profile
- User Questionnaire Response
- View the Profile and Questionnaire Response of other users
- In-app Messaging
- Spring Security: Users cannot access any pages aside from the login and registration form pages unless logged into the site first.
- MongoDB Atlas (MongoDB v4.2.10) - To compare relational and non-relational databases
- Spring Boot v2.3.5 - To compare the latest in Java frameworks with vanilla Java Spring
- Apache Maven v4.0.0 - To automate the builing of the java application
- GitHub - To store the source code
- Heroku v18 - To deploy the application
- Java Development Kit v11.0.8 - To compare the university-standard Java 8 with a newer version
- Bootstrap v4.5.2 - To add style to the website
- Thymeleaf v3.0.11 - To compare with the use of Apache Tiles and JSPs
- Visual Studio Code v1.49.3
- All-Caps Database Table Names
- Facade Design Pattern
- IoC / DI Design Pattern
- DAO Design Pattern
- MVC Design Pattern
- N-Layer Design Pattern
- Application is deployed to Heroku using their integrated GitHub pipeline.
- Logging with Logback and SLF4J
- Aspect Interceptor
New technologies include:
- Spring Boot
- Thymeleaf
- MongoDB
I've created vanilla Java Spring applications in the past, but wanted to compare it with the convention-based structure of Spring Boot. Spring Boot is frequently used in the industry, which further drives my incentive to use this framework. The database technology, MongoDB Atlas v4.2.10, allows for fast and flexible documenting of data created by users in the application. Thymeleaf is a popular, more powerful alternative to the use of Apache Tiles with JSPs, so this application serves to compare these two technologies.
See also: Design Specification
The point of this application is to allow the user to create and sign into an account, create and update their profile, fill out the roommate preferences questionnaire, and view the profiles and questionnaire responses of other users on the website. This is done with a focus on the Spring Boot backend, using MVC and N-Layer design patterns to form the structure of the application. The user data will be contained in a MongoDB Cluster using MongoDB Atlas, an online application which serves as a cloud database service. Inversion of Control and Dependency Injection are also used in this application to allow for increase code interchangeability.
- Class UML example:
Questionnaire Response Functionality
- Sitemap:
- Logical Diagram:
- Unfamiliar with Spring Boot
- Unfamiliar with MongoDB
- Unfamiliar with Thymeleaf
- Unfamiliar with Spring Security
- Unfamiliar with Visual Studio Code
- Developed Proofs of Concept (POCs) for unfamiliar technologies
- Referenced documentation sources
- Referenced technical resource guides from sites including:
- Developing Proofs of Concept
- Bugs:
- Search bar in DisplayAllUsers page does not filter users
- Spring Security removes line breaks and indentation in messages and replies.