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:

  1. Users of the system will be comfortable sharing their contract data.
  2. The application will be used by scholars who have completed their studies.
  3. The application will be used within the hosting provider's limits for a Web Application.
  4. The application will be developed in .NET Core 8.0 using EFCore and .NET 8.0 and will be maintained using same.
  5. 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:

  1. The system shall allow users to register and login to application using a google account.
  2. The system shall allow users to utilize a demo account to test the application.
  3. The system shall allow users to create/read/update/delete a scholarship/bursary profile.
  4. The system shall allow users to create multiple scholarship/bursary profiles.
  5. The system shall allow users to create/read/update/delete a contract for management of scholarship/bursary contracts.
  6. The system shall limit the user to one contract per scholarship/bursary profile.
  7. The system shall allow users to create/read/update/delete jobs for management of employment.
  8. The system shall allow users to create/read/update/delete job applications for management of job application history.
  9. The system shall allow users to create/read/update/delete workflow updates for management of job application statuses.
  10. The system shall allow users to calculate their indebtedness based on their contract and their jobs to determine the amount owed by the scholar.
  11. The system shall provide an interface for the entering of custom parameters for the indebtedness calculator.
  12. The system shall ensure that users are authorized to perform certain actions.
  13. The system shall implement roles for Users and a Demo account.
  14. The system shall allow users to delete their account and all of their data.
  15. The system shall delete all associated data regarding a user if they choose to delete their account.
  16. The system shall not store the scholar's contract pdf file.
  17. The system shall enable the management of users to ensure that the platform is not abused..
  18. 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:

  1. The application shall have a user friendly interface..
  2. The application shall inform the user of the data that a particular form collects via '?' tags.
  3. The application shall utilize the Model-View-Controller design pattern.
  4. The application shall notify the users of errors with a clear and distinctive alert or message.
  5. The application shall redirect the users to register/login when performing a privilleged action.
  6. The system should not limit the number of applications that can be entered by the user.
  7. The system should not limit the number of calculations that can be performed by the user.
  8. The system should not limit the number of jobs that can be entered by the user.
  9. 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 Services

    Azure 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 Database

    Azure 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 Homepage
Project Report
Project Report

Testing

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:

  1. Visit the home page.
  2. Click on the sign in button.
  3. Click on the google button.
  4. Enter the google account credentials.
  5. Click on the register button.

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:

  1. Visit the home page.
  2. Click on the sign in button.
  3. Click on the google button.
  4. Enter the google account credentials.
  5. Click on the login button.

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:

  1. Login.
  2. Enter the google account credentials.
  3. Click on the profiles button.
  4. Click on the create button.
  5. Fill out the form.
  6. Click on the create button.

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:

  1. Login.
  2. Click on the profiles navigation.
  3. Click on the edit button.
  4. Fill out the form.
  5. Click on the edit button.

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:

  1. Login.
  2. Enter the google account credentials.
  3. Click on the profiles navigation.
  4. Click on the delete button.
  5. Click on the delete button.

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:

  1. Login.
  2. Click on the contract navigation.
  3. Select the profile (if applicable)
  4. Click on the create button.
  5. Fill out the form.
  6. Click on the create button.

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:

  1. Login.
  2. Click on the contract navigation.
  3. Select the profile (if applicable)
  4. Click on the edit button.
  5. Fill out the form.
  6. Click on the update button.

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:

  1. Login.
  2. Click on the contract navigation.
  3. Select the profile (if applicable)
  4. Click on the delete button.
  5. Click on the delete button.

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:

  1. Login.
  2. Visit the jobs page using the navigation.
  3. Select the profile (if applicable)
  4. Click on the create button.
  5. Fill out the form.
  6. Click on the create button.

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:

  1. Login.
  2. Visit the jobs page using the navigation.
  3. Select the profile (if applicable)
  4. Click on the edit button.
  5. Fill out the form.
  6. Click on the update button.

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:

  1. Login.
  2. Visit the jobs page using the navigation.
  3. Select the profile (if applicable)
  4. Click on the delete button.
  5. Click on the delete button.

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:

  1. Login.
  2. Visit the applications page using the navigation.
  3. Select the profile (if applicable)
  4. Click on the create button.
  5. Fill out the form.
  6. Click on the create button.

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:

  1. Login.
  2. Visit the applications page using the navigation.
  3. Select the profile (if applicable)
  4. Click on the edit button.
  5. Fill out the form.
  6. Click on the update button.

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:

  1. Login.
  2. Visit the applications page using the navigation.
  3. Select the profile (if applicable)
  4. Click on the delete button.
  5. Click on the delete button.

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:

  1. Login.
  2. Visit the applications page using the navigation.
  3. Select the profile (if applicable)
  4. Expand the application accordion.
  5. Click on the add workflow button.
  6. Fill out the form.
  7. Click on the create button.

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:

  1. Login.
  2. Visit the applications page using the navigation.
  3. Select the profile (if applicable)
  4. Expand the application accordion.
  5. Click on the manage button.
  6. Fill out the form.
  7. Click on the update button.

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:

  1. Login.
  2. Visit the applications page using the navigation.
  3. Select the profile (if applicable)
  4. Expand the application accordion.
  5. Click on the manage button.
  6. Click on the delete button.
  7. Click on the delete button.

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:

  1. Login.
  2. Visit the calculator page using the navigation.
  3. Select the profile (if applicable)
  4. Click on the calculate button.

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:

  1. Login.
  2. Create a job.
  3. Visit the calculator page using the navigation.
  4. Select the profile (if applicable)
  5. Click on the calculate button.

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:

  1. Login.
  2. Create a job.
  3. Visit the calculator page using the navigation.
  4. Select the profile (if applicable)
  5. Enter the parameters.
  6. Click on the calculate button.

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:

  1. Login as an admin.
  2. Visit the admin page using the navigation.
  3. Search for the user.
  4. Click on the lock button.

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:

  1. Login as an admin.
  2. Visit the admin page using the navigation.
  3. Search for the user.
  4. Click on the unlock button.

Expected Result: The user should be able to login.

Pass