TTNSC - Trinidad and Tobago National Scholarship Companion
4th November 2023 to 24th November 2023 (14 days without documentation, 20 days with documentation)Introduction
Problem Scope
National scholars/bursary recipients of Trinidad and Tobago often have a decision to make once they have accepted their scholarship/bursary and have completed their studies; repay the scholarship/bursary or complete their term of obligatory service. In some cases, scholars may decide to serve, serve some and repay some of their indebtedness, or flat out repay the entire sum. One critical piece of information required in making this decision is the amount of money owed by the scholar to the GoRTT. At present, there are no updated online resources that would enable a scholar to get the amount that they owe. Should a scholar require to obtain this information, they would have to write a formal request for calculation of indebtedness to their scholarship/bursary officer. As such, there is a need for a solution that would allow scholars to calculate their indebtedness based on their scholarship/bursary loan agreement and the jobs that they have entered into the system.
System Goals
The solution aims to deliver a web-based application platform that would enable the signing up of users, the entering of contract details, the entering of job details, the optional application details/workflow details, and the calculation of indebtedness based on the entered data; with optional parameters. The application would also allow users to delete their account and all of their data.
System Evolution
The system should be able to evolve to include features such as the generation of reports, and the ability to upload and extract bursary contract pdf files.
Definitions, Acronyms, and Abbreviations
The following is a list of terms, and their definitions, and which may be used throughout this write-up.
BURSARY | A funding award, granted by the GoRTT, based on community involvement, financial need, extra-curricular activities, and academic performance. |
---|---|
DATABASE | A repository used in the storage and retrieval of data. |
INDEBTEDNESS | The amount of money owed by the scholar to the GoRTT. |
MSLA | Master Scholarship Loan Agreement; the scholarship contract. |
OBLIGATORY SERVICE | The duration of service as time employed, related to your field of study, within the public sector, or the private sector if permission is obtained. |
ORM | Object Relational Mapper - Used to interface with the database in a programming-first manner. |
SCHOLAR | A recipient of a National Scholarship funded by the GoRTT. |
SCHOLARSHIP | A funding award, granted by the GoRTT, based on academic performance at examination levels. |
Project Overview
Solution Description
The Trinidad and Tobago National Scholarship Companion is a web based application that was designed to aid national scholarship/bursary recipients with managing their obligatory service and keep track of their indebtedness. Users are welcome to register using one of the login platforms and make use of the interfaces to create a loan profile, and map jobs to the fulfillment of the obligations of that profile. The user may also create applications to track their job application history and the status of each application. The application also provides a calculator that allows the user to determine their indebtedness based on the parameters of their scholarship/bursary loan agreement and the jobs that they have entered into the system.
Assumptions and Dependencies
The following is a list of assumptions and dependencies that were considered in development:
- Users of the system will be comfortable sharing their contract data.
- The application will be used by scholars who have completed their studies.
- The application will be used within the hosting provider's limits for a Web Application.
- The application will be developed in .NET Core 8.0 using EFCore and .NET 8.0 and will be maintained using same.
- The application will have no future compatibility issues when hosted on its inital hosting provider.
Specification Requirements
Functional Requirements
The following is a list of the functional requirements of the application:
- The system shall allow users to register and login to application using a google account.
- The system shall allow users to utilize a demo account to test the application.
- The system shall allow users to create/read/update/delete a scholarship/bursary profile.
- The system shall allow users to create multiple scholarship/bursary profiles.
- The system shall allow users to create/read/update/delete a contract for management of scholarship/bursary contracts.
- The system shall limit the user to one contract per scholarship/bursary profile.
- The system shall allow users to create/read/update/delete jobs for management of employment.
- The system shall allow users to create/read/update/delete job applications for management of job application history.
- The system shall allow users to create/read/update/delete workflow updates for management of job application statuses.
- The system shall allow users to calculate their indebtedness based on their contract and their jobs to determine the amount owed by the scholar.
- The system shall provide an interface for the entering of custom parameters for the indebtedness calculator.
- The system shall ensure that users are authorized to perform certain actions.
- The system shall implement roles for Users and a Demo account.
- The system shall allow users to delete their account and all of their data.
- The system shall delete all associated data regarding a user if they choose to delete their account.
- The system shall not store the scholar's contract pdf file.
- The system shall enable the management of users to ensure that the platform is not abused..
- The system should allow for the extraction of data from the scholar's contract.
Non-Functional Requirements
The following is a list of the non-functional requirements of the application:
- The application shall have a user friendly interface..
- The application shall inform the user of the data that a particular form collects via '?' tags.
- The application shall utilize the Model-View-Controller design pattern.
- The application shall notify the users of errors with a clear and distinctive alert or message.
- The application shall redirect the users to register/login when performing a privilleged action.
- The system should not limit the number of applications that can be entered by the user.
- The system should not limit the number of calculations that can be performed by the user.
- The system should not limit the number of jobs that can be entered by the user.
- The system should not limit the number of scholarship/bursary profiles that can be created by the user.
Scholarship Profiles
This feature enables the user to manage their scholarship/bursary profiles and the data associated with them. The user may create, read, update, and delete scholarship/bursary profiles.
Stimulus/Response Sequence
Step 1 | The user visits the profile page. |
---|---|
Step 2 | The user decides on the action they would like to perform with respect to a profile; create, edit, delete. |
Step 3 | The user fills out the information where applicable and confirms the action. |
Step 4 | The system notifies the user of the outcome. |
Functional Requirements
REQ-1 | The system shall allow users to create multiple scholarship/bursary profiles. |
---|---|
REQ-2 | The system shall allow users to create/read/update/delete a scholarship/bursary profile. |
Contracts
This feature enables the user to manage their contracts and the data associated with them. The user may create, read, update, and delete contracts from their profiles.
Stimulus/Response Sequence
Step 1 | The user visits the contract page. |
---|---|
Step 2 | The user decides on the action they would like to perform with respect to a profile; create, edit, delete. |
Step 3 | The user fills out the information where applicable, or uploads their contract, and confirms the action. |
Step 4 | The system extracts the data (if applicable), creates a database entry, and notifies the user of the outcome. |
Functional Requirements
REQ-1 | The system shall allow users to create/read/update/delete a contract for management of scholarship/bursary contracts. |
---|---|
REQ-2 | The system shall not store the scholar's contract pdf file. |
REQ-3 | The system should allow for the extraction of data from the scholar's contract. |
Jobs
This feature enables the user to manage their jobs and the data associated with them. The user may create, read, update, and delete jobs for their profiles. The salaries and duration of the jobs are used in the calculation of the user's indebtedness.
Stimulus/Response Sequence
Step 1 | The user visits the Jobs page. |
---|---|
Step 2 | The user decides on the action they would like to perform with respect to a job; create, edit, delete. |
Step 3 | The user fills out the information where applicable and confirms the action. |
Step 4 | The system notifies the user of the outcome. |
Functional Requirements
REQ-1 | The system shall allow users to create/read/update/delete jobs for management of employment. |
---|
Calculator
This feature enables the user to calculate their indebtedness using the parameters of their scholarship/bursary loan agreement and the jobs that they have entered into the system. In addition, the user may enter custom parameters for the calculation.
Stimulus/Response Sequence
Step 1 | The user visits the Calculator page. |
---|---|
Step 2 | The user enters the custom parameters where applicable and selects the jobs that should be counted towards service. |
Step 3 | The system produces the breakdown of the calculation and indebtedness. |
Functional Requirements
REQ-1 | he system shall allow users to calculate their indebtedness based on their contract and their jobs to determine the amount owed by the scholar. |
---|---|
REQ-2 | The system shall provide an interface for the entering of custom parameters for the indebtedness calculator. |
Job Applications
This feature enables the user to manage their job applications and the data associated with them. The user may create, read, update, and delete job applications for their profile, as well as manage the workflow.
Stimulus/Response Sequence
Step 1 | The user visits the Applications page. |
---|---|
Step 2 | The user decides on the action they would like to perform with respect to an application; create, edit, delete. |
Step 3 | The user fills out the information where applicable and confirms the action. |
Step 4 | The system notifies the user of the outcome. |
Step 5 | The user decides on the action they would like to perform with respect to the application workflow; create, edit, delete |
Step 6 | The user fills out the information where applicable and confirms the action. |
Step 7 | The system notifies the user of the outcome. |
Functional Requirements
REQ-1 | The system shall allow users to create/read/update/delete job applications for management of job application history. |
---|---|
REQ-2 | The system shall allow users to create/read/update/delete workflow updates for management of job application statuses. |
Account
This feature enables the user to manage their account and the data associated with them. The user may delete their account and all of their data.
Stimulus/Response Sequence
Step 1 | The user visits the Account page by clicking on their username in the top right. |
---|---|
Step 2 | The user clicks on the person data button and delete. |
Step 3 | The system deletes the user's account and cascading deletes ensure that all of their data is deleted. |
Step 4 | The system logs out the user |
Functional Requirements
REQ-1 | The system shall allow users to delete their account and all of their data. |
---|---|
REQ-2 | The system shall delete all associated data regarding a user if they choose to delete their account. |
Admin/User Management
This feature enables the admins to manage the users of the application. The admin may lock and unlock accounts.
Stimulus/Response Sequence
Step 1 | The admin visits the Admin page using the admin tab in the nav-bar. |
---|---|
Step 2 | The admin searches for the account they would like to manage. |
Step 3 | The admin clicks on the "Lock/Unlock" button for a particular user to toggle their lockout state. |
Step 4 | The system disables login access to the account. |
Functional Requirements
REQ-1 | The system shall enable the management of users to ensure that the platform is not abused. |
---|
System Design
System Architecture
The following is a depiction of the architecture behind the TTNSC.
Database Design
The following is a depiction of the design behind the TTNSC; where a concept became a reality.
It should be noted that most table relationships are compositions and would therefore mean that the deletion of your profile would result in the deletion of all your data.
Sequence Diagram
The following is a depiction of the sequence diagram of the main feature of the application; the calculator.
Use Cases
The following is a depiction of the use cases of the application.
Interface Design
Design Properties
The following is a list of design properties that were chosen for the application's components.
Design Component | Value |
---|---|
Primary Color | Bootstrap .bg-dark |
Secondary Color | Bootstrap .bg-dark-subtle |
Tertiary Color | Bootstrap .bg-secondary |
Primary Font | Segoe UI |
Primary Font Color | Bootstrap .text-white |
Secondary Font | Segoe UI |
Secondary Font Color | Boostrap .text-muted |
UI Library | Bootstrap |
Heading Font Size | Bootstrap Default |
Sub Heading Font Size | Bootstrap Default |
Paragraph Font Size | Bootstrap Default |
Interface Wireframes
The following diagram contains a series of wireframes that were created to envision the user interface.
Chosen Technologies
The following is a list of the technologies used within the project.
-
.NET Core MVC 8.0
.NET Core MVC 8.0 is a web application framework developed by Microsoft, as a modular framework that runs on Windows, Linux, and macOS. It was chosen as the project as initially meant to serve as an exercise for learning .NET 8.0. Consequently, the project was developed using the framework and the .NET 8.0 programming language and fit the requirements of the project perfectly.
-
Azure App ServicesAzure App Services is a fully managed platform as a service (PaaS) for building, deploying, and scaling web apps and APIs. It was chosen as the hosting platform for the application due to its integration with Visual Studio 2022, as well as the fact that it is a cloud based service for which I *have* an active subscription. -
Azure SQL DatabaseAzure SQL Databases are a relational database-as-a-service (DBaaS) based on the latest stable version of Microsoft SQL Server Database Engine. It was chosen due to its seamless integration with the application through the Entity Framework Core's Object Relational Mapper (ORM), as well as the fact that it is a cloud based database that would allow for easy access and maintenance on Azure. -
SmarterASP Hosting Services
SmarterASP is a web hosting service that provides a Windows based hosting platform for web applications. It was chosen as the hosting platform for the application due to its integration with Visual Studio 2022, its cheaper cost, its inclusion of Microsoft SQL server, and its ability to host .NET Core 8.0 applications.
-
Bootstrap 5.3
Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It was chosen for its ease of use and its ability to provide a responsive design, as well as my previous experience with the framework. Additionally, .NET Core 8.0 already has the bootstrap boilerplate built in.
-
jQuery
jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax. It was chosen for its ease of use and its ability to provide a responsive design, as well as my previous experience with the framework.
Deliverables
The following deliverables were produced as a result of the project.
Deployed Application
Application HomepageProject Report
Project ReportTesting
The following tests were performed on the application.
Test Cases | Pass/Fail | |
---|---|---|
GT-01 |
Test Name: Test the registration of a user. Test Description: The user should be able to register using their google account. Test Steps:
Expected Result: The user should be redirected to the home page and be logged in. |
Pass |
GT-02 |
Test Name: Test the login of a user. Test Description: The user should be able to login using their google account. Test Steps:
Expected Result: The user should be redirected to the home page and be logged in. |
Pass |
GT-03 |
Test Name: Test the creation of a scholarship/bursary profile. Test Description: The user should be able to create a scholarship/bursary profile. Test Steps:
Expected Result: The user should be redirected to the profiles page and the new profile should be displayed. |
Pass |
GT-04 |
Test Name: Test the editing of a profile. Test Description: The user should be able to edit a profile. Test Steps:
Expected Result: The user should be redirected to the profiles page and the edited profile should be displayed. |
Pass |
GT-05 |
Test Name: Test the deletion of a profile. Test Description: The user should be able to delete a profile. Test Steps:
Expected Result: The user should be redirected to the profiles page and the deleted profile should not be displayed. |
Pass |
GT-06 |
Test Name: Test the creation of a contract. Test Description: The user should be able to create a contract. Test Steps:
Expected Result: The user should be redirected to the contract page and the new contract should be displayed. |
Pass |
GT-07 |
Test Name: Test the editing of a contract. Test Description: The user should be able to edit a contract. Test Steps:
Expected Result: The user should be redirected to the contract page and the edited contract should be displayed. |
Pass |
GT-08 |
Test Name: Test the deletion of a contract. Test Description: The user should be able to delete a contract. Test Steps:
Expected Result: The user should be redirected to the contract page and the contract form should be blank. |
Pass |
GT-09 |
Test Name: Test the creation of a job. Test Description: The user should be able to create a job. Test Steps:
Expected Result: The user should be redirected to the jobs page and the new job should be displayed. |
Pass |
GT-10 |
Test Name: Test the editing of a job. Test Description: The user should be able to edit a job. Test Steps:
Expected Result: The user should be redirected to the jobs page and the edited job should be displayed. |
Pass |
GT-11 |
Test Name: Test the deletion of a job. Test Description: The user should be able to delete a job. Test Steps:
Expected Result: The user should be redirected to the jobs page and the job form should be blank. |
Pass |
GT-12 |
Test Name: Test the creation of a job application. Test Description: The user should be able to create a job application. Test Steps:
Expected Result: The user should be redirected to the applications page and the new application should be displayed. |
Pass |
GT-13 |
Test Name: Test the editing of a job application. Test Description: The user should be able to edit a job application. Test Steps:
Expected Result: The user should be redirected to the applications page and the edited application should be displayed. |
Pass |
GT-14 |
Test Name: Test the deletion of a job application. Test Description: The user should be able to delete a job application. Test Steps:
Expected Result: The user should be redirected to the applications page and the application form should be blank. |
Pass |
GT-15 |
Test Name: Test the creation of a workflow update. Test Description: The user should be able to create a workflow update for a job application. Test Steps:
Expected Result: The workflow table should refresh and the new workflow should be shown. |
Pass |
GT-16 |
Test Name: Test the editing of a workflow update. Test Description: The user should be able to edit a workflow update for a job application. Test Steps:
Expected Result: The workflow table should refresh and the edited workflow should be shown. |
Pass |
GT-17 |
Test Name: Test the deletion of a workflow update. Test Description: The user should be able to delete a workflow update for a job application. Test Steps:
Expected Result: The workflow table should refresh and the workflow should be removed. |
Pass |
GT-18 |
Test Name: Test the calculation with a contract and no jobs. Test Description: The user should be able to calculate their indebtedness with a contract and no jobs. Test Steps:
Expected Result: The calculation should be displayed. |
Pass |
GT-19 |
Test Name: Test the calculation with a contract and jobs. Test Description: The user should be able to calculate their indebtedness with a contract and jobs. Test Steps:
Expected Result: The calculation should be displayed. |
Pass |
GT-20 |
Test Name: Test the calculation with parameters. Test Description: The user should be able to calculate their indebtedness with parameters. Test Steps:
Expected Result: The calculation should be displayed. |
Pass |
GT-21 |
Test Name: Test the admin user management locking of accounts. Test Description: The admin should be able to lock a user's account. Test Steps:
Expected Result: The user should not be able to login. |
Pass |
GT-22 |
Test Name: Test the admin user management unlocking of accounts. Test Description: The admin should be able to unlock a user's account. Test Steps:
Expected Result: The user should be able to login. |
Pass |