• Documentation of functional and non-functional requirements
• Data dictionary
• Initial Use Case Model, consisting of Use Case diagram and Use Case descriptions
• UI Mockups
The Lab 1 Deliverables.pdf contains all the required lab 1 deliverables.
The Use Case Diagram.png is included for reference in case the use case diagram in the pdf file is too small.
• Complete Use Case diagram
• Use Case descriptions
• Class diagram of entity classes
• Key boundary classes and control classes
• Sequence diagrams of some use cases
• Initial Dialog map
The Lab 2 Deliverables.pdf contains all the required lab 2 deliverables.
The Lab2_Diagrams.pdf is included for reference in case the diagrams in the pdf file is too small.
* Complete Use Case model
* Design Model
* Class diagram
* Sequence diagrams
* Dialog map
* System architecture
* Application skeleton
The Lab 3 Deliverables.pdf contains all the required lab 3 deliverables.
* Working application prototype
* Source code
* Test Cases and Testing Results
* Demo script
* Documentation such as SRS
* Video link
- HomeGoWhere
- Setup Instructions
- Pre-Configured Users
- Documentation
- API Docs
- App Design
- External APIs
- Contributors
- This application serves the purpose of helping Owners to rent houses and Tenants to find rooms to rent.
- In the
/frontenddirectory, install the required node modules.
npm install
- Start the application
npm run start
Now you are ready to start using the HomeGoWhere frontend! The frontend application is running on http://localhost:TBC
- cd into /HomeGoWhere
cd .\HomeGoWhere\
- run backend
mvn spring-boot:run
Now you are ready to start using the HomeGoWhere Application backend. The server application is running on http://TBC.
- Done using postgresql, with relational database.
| UserID | Name | Contact | Photo | Password (Hashed) | |
|---|---|---|---|---|---|
| 27 | Peter Parker | peter.parker123@gmail.com | 88888883 | NULL | $2a$10$J4zzLG8OLo.f87Cw5oiGEeQ9TIi6zC4gkU3FI3Y6nUknuNGu7kI9a |
| 28 | Tony Stark | tony.stark999@gmail.com | 88888884 | NULL | $2a$10$9vErzEkUj/fbBE/8WPtzwO4UdMRKVeN87kEDdQ4O.uoTwMjUmd9QK |
| 29 | Bruce Banner | bruce.banner101@gmail.com | 88888885 | NULL | $2a$10$/WfMrfSj.IBP5lC1jSJ1gegyuFilLGQyN.s.HfVMiYU51wQJzD/CK |
| 30 | Diana Prince | diana.prince88@gmail.com | 88888886 | NULL | $2a$10$Q1Xld6glaQqPTIgSoxfBhOmTkK2hcsZeZjGtGHu/FCKMQe4zSz5De |
| 31 | Barry Allen | barry.allen33@gmail.com | 88888887 | NULL | $2a$10$4gxTBRZWEKVV9vXVovZGl.xLHtRjBYPh8Ctfoojh/5OGiIG7WcY3W |
| 32 | Clark Kent | clark.kent456@gmail.com | 88888888 | NULL | $2a$10$4sfzFEeDAOyNkbsh5KUhmum3.fZMgQBpZ4ThzxHIt2/6PHSpl2zsq |
HomeGoWhere backend application uses Spring-Boot.
This is an example of one of the many API end points we have

Our api documentation is in http://localhost:8080/swagger-ui/index.html#/ after running backend
The HomeGoWhere project is a mobile application built with React Native and Expo for the frontend and utilizes Axios for making HTTP requests to the backend API. This document provides an overview of the folder structure and the purpose of each key file and directory.
- Main project directory where all the application code and dependencies are located.
- Contains configuration files specific to the Expo environment. These files are generally managed by Expo and handle settings for running the app on different devices, enabling hot reloading, and other Expo-specific features.
- Primary source folder for the application's components and screens.
- Stores main UI components and core logic that make up the app.
- Holds static resources such as images, fonts, icons, and other media files used throughout the app.
- Contains reusable React Native components that are shared across various screens and features within the app.
- Encourages modularity by allowing different parts of the app to utilize these components without duplicating code.
- Stores all installed dependencies for the project. When
npm installoryarn installis run, all required libraries, including React Native, Expo, Axios, and others, are saved here. - Note: This folder should not be modified directly, as it is managed by the package manager.
- Specifies which files and directories Git should ignore when committing changes to the repository.
- Includes entries such as
node_modules, logs, and build artifacts that are not necessary to track in version control.
- Core configuration file for the Expo app.
- Defines settings like the app name, version, icon, splash screen, and other metadata. Expo uses this file to understand how to package and serve the app.
- Configuration file for Babel, a JavaScript compiler that enables the use of modern JavaScript features.
- Transforms the code to ensure compatibility with the various environments in which the app may run.
- TypeScript declaration file for Expo.
- Provides typings for Expo-specific modules and custom environment variables used within the app, enhancing type safety and code completion.
- Lists the project's dependencies and scripts.
- Stores metadata about the project, such as its name, version, and a list of npm/yarn dependencies, including React Native, Expo, and Axios.
- Contains scripts for running, building, and testing the application, e.g.,
npm startto run the app in development mode.
- Automatically generated file that locks the versions of all dependencies used in the project.
- Ensures consistent installation of the exact same dependency versions on different devices or environments.
- TypeScript configuration file that defines compiler options, such as the target version of JavaScript, module system, and directory paths.
- Ensures TypeScript checks and compiles code according to the project's specific requirements, improving type safety and error checking.
- Contains all the folders for the backend
- Contains methods to create, read, update, and delete business objects.
- Contains the Business Objects.
- Controllers that uses the various services implemented in the
\servicedirectory.
- contains all the Data Transferable Objects
- Contains all the interface of the service for service to implement
- Contains all the specific queries for the database that is not provided by Spring-boot
- Contains all security features of our Application, such as JWT authentication
- Contains all the API Endpoint unit testing to ensure the API Endpoints are working as intended
Facade Patternvia theControllers.- Refer to
\HomeGoWhere\src\main\java\HomeGoWhere\controller - The goal is to simplify the interactions with various subsystems, thereby enhancing usability and maintainability.
- Refer to
- Single Responsibility Principle
- Different packages with different distinct responsibilities are created. Specific classes in each package are responsible for a specific business model or logic group.
- Open-Closed Principle
- The application is open to extension through the use of facade pattern (controllers).
- Interface Segregation Principle
- Small and specific interfaces are used
- Dependency Injection Principle
- Spring boot application has appropriate annotations such as @Service and @Autowired to mark the classes where dependencies need to be injected
- React Native
- JavaScript
- Expo
- SpringBoot
- Java
- PostgresSQL
To be filled.
The following contributors have contributed to the whole Software Developement Life-cycle, including (not exhausive):
- Ideation and refinement
- Generation of functional and non-funtional requirements
- Generation of Use Cases and Descriptions
- UI/UX Mockup and Prototyping (Figma)
- Design of Architecture Diagram, Class Diagram, Sequence Diagrams, and Dialog Map Diagram
- Development of Application
- Black-box and White-box Testing
- Documentations
| Name | Github Username | Role |
|---|---|---|
| Lim Jing Rong | jingronggg | Backend/Frontend |
| Loo Ping Wee | lpwee | Backend/Frontend |
| Goh Shuen Wei | shuenwei | Backend/Frontend |
| Ng Jing En | negnij | Backend/Frontend |
| Babu Sankar Nithin Sankar | nithinsankar-b | Backend/Frontend |
| Lau Zhan You | donkey-king-kong | Backend/Frontend |
