# Product
## Ambition
| Explain what was achieved in the project relative to the original objectives. |
| ------------------------------------------------------------ |
| [To what we achieve compare to the original objective, our team took the initiatives to improve the Cargo locating Module as each iteration passed, by adding the Pathfinding Library, which is not a part of the customer requirement and the original objective. The pathfinding library aims to provide efficient and convenient visual aids to the Forklift drivers in assisting them to reach their intended cargo. Unlike in the original objective, when a driver searches for specific cargo, only the cargo location information will be returned in a String Format. Overall, our deployed program will be able to retrieve and store data from the QUUPPA system and the Database respectively via API Calls. It will be able to record the cargo's real-time positioning and log the cargo movements. Our team structure the program in an MVC approach all as such to ensure continuously successive retrieval of pertinent data relevant to the cargo information from the QUUPPA system and storing these data onto the team’s backend database. API calls from either the QUUPPA system or database will be made to display information on the front-end application. The forklift driver then can use the web application to check the real-time location of the cargoes. In addition to that, the program will implement a Pathfinding algorithm library such as Breadth-First Search to display the shortest path to take to locate targeted cargo at the shortest time possible. The program involves API calls from both the QUUPPA System and database using mainly .netcore for the backend program, which will be converted to JSON strings. These JSON strings are essential for the frontend team development using react to display data on the application where they are deemed pertinent as information for the forklift drivers to reach their intended cargo.] |
| [    ] |
## Design and Implementation
| Project Organisation. "*Is the software product directory well organised according to language/platform conventions? Is there a getting started document present (e.g. README.md)? Is the release accompanied by release notes documenting new features and known bugs? Can the code be compiled and tested automatically? Can the release be installed automatically? Is there a user guide within README.md or called USERGUIDE.md. If the installation is not fully automated are there instructions for this?*" |
| ------------------------------------------------------------ |
| [The project is well-organised and follows .NET core file organization structure. There is a README.md file that provides instructions for the installation of the project and the code can be compiled and tested accordingly by cloning the repository or downloading the project files. The command ‘dotnet run’ can be used to execute the software product,but there is no automated testing] |
| [ ] |
| Software Design. "*There is a correspondence between high level design documentation for the project and the organisation of the source code. There is a careful separation of concerns between modules making use of appropriate architectural and design patterns. Software metrics indicate loosely coupled software and high modularity/cohesion.*" |
| ------------------------------------------------------------ |
| [For the web application, the team adopted a Model View Controller service (MVC) design approach, one of the features offered in ASP.NET framework. The main reason for choosing this integrated development environment is that it is useful in managing the separation of the modelling, the presentation of data and the logic of a program into three different layers. This helps the team to manage the structure of the coding for this cargo locate system project with a clean separation of application’s data, logic and rules. The view component is created using react library interacting with the controller, which was programmed in C# to manipulate the models retrieved from the PostgreSQL database. This MVC approach has been extended with service which is to encapsulate all the business logic in controllers. The controllers then determine what response to send to frontend and control the running of services.] |
| [] |
| Implementation. "Does the implementation that follows a consistent style? Is there a use of explicit identifiers for modules, methods and variable (as appropriate)? Are functions short and comprehensible with low nesting? Is the level of code documentation <em>appropriate</em> (i.e. neither absent nor excessive) use of program documentation will be highly credited." |
| ------------------------------------------------------------ |
| [The functions naming convention adopted is explicit and it informs the user of what the function is meant for. Meanwhile, for the variables they were privately declared and have explicit names that were aligned with the values provided. Furthermore, since .NET core adopts the Model-View-Controller design, the implementation also followed accordingly.The models were declared appropriately with the correct data types and the required field label and the services were well-organized with proper names making it easy to find a required service code. On the topic of comments and documentation, the code was well-commented with details describing each function purpose.] |
| [] |
## Handover Plan
| Intellectual property and licensing. Describe what agreement you reached *with* your customer regarding intellectual property and licensing. For example, did you *agree* a suitable open source licence? Did you transfer intellectual property to the customer in exchange for compensation? State and give evidence for when you began discussions with the customer regarding this issue. |
| ------------------------------------------------------------ |
| [During the customer briefing, the licensing and property rights were discussed and agreed upon that CloudPlus will have full access and ownership of the source code. Besides that, prior to starting on our tasks, our team had sign an Non-disclosure agreement form on the agreement to CloudPlus terms and condtion on granting us full access to their QUUPPA System for the retrieval of data essential for our APIs call. The QUUPPA System mainly consist of data pertaining to the Cargoes Tag information and also pre-programmed Map Layout for our team to perform backend testing to track tag movement. No compensation was made in exchange for the intellectual property. ] |
| [ ] |
| Delivery. Describe the plan you *agreed* with the customer for making your software available to them. For example, did you agree to make the repository publicly available, or did you transfer the repository to them as a zip file? State and give evidence for when you began discussions with the customer regarding this issue. |
| ------------------------------------------------------------ |
| [Based on the agreement with SIT and cloudplus, The entire project in the core repository will be locked after the 1st of April 2021 and staff members from CloudPlus will be given full access for evaluation and possession.] |
| [No Evidence as all were through verbal communication on Customer day meeting ] |