natPortal is the central hub for all interactions with NAT and its products and services. As the public interface, natPortal shall provide an intuitive interface to ensure the planning and delivery of events, courses, and all of NAT’s products.

This document outlines the requirements that natPortal must fulfill for viability in the role as described above. This document shall serve as the motivation to the creation of natPortal and a guide for the design of natPortal and all of its constituent software.

Stakeholders

User

The user is registered to natPortal. natPortal serves as a central hub to the user, providing a directory for NAT’s products and facilitating the purchase and access to those products within the limitations of an online application.

natPortal shall allow a user to:

  • Log in and log out of an account, and change their account’s password
    • Implemented through ZITADEL
  • Modify their profile
  • View all of NAT’s products available to that user
  • Register for NAT’s products, including courses, events, hardware lending, room booking
    • Fill a form for that product
    • If a price is specified, complete payment for that product
      • Implemented through Stripe
    • Be approved immediately, or await approval of that product

NAT staff

NAT’s staff are similarly registered to natPortal. Staff differ from users in that they serve as administrators for natPortal and its content, including NAT’s products, content, events, teams, and users. Staff have the permissions of staff in addition to the permissions of users.

natPortal shall allow NAT’s staff to, in addition to the abilities of the User:

  • Search users
  • Manage content on natPortal
  • Manage products available through natPortal
    • Manage the availability of products
    • Manage the description of products

Other NAT programs

As a client portal to NAT’s services, natPortal shall utilize and/or make use of NAT’s tech infrastructure. Each of NAT’s infrastructure which require interaction with natPortal will be described in their respective document. natPortal’s API specification will be described using the latest OpenAPI specification.

NAT’s services rely on natPortal to make these services available to the natPortal users.

Extensions of natPortal’s requirements

The contents of this document comprises the basic requirements of natPortal. As a client portal, natPortal may eventually follow a microservice architecture. However, for the purposes of simplicity where scale is not an issue at deployment, natPortal will be developed as a modularized monolith. This diagram (citation to diagram) shows the modularization and dependencies of natPortal.

The requirements of, and the implementation of each microservice is described in their respective file in Services and recorded in the Requirements Matrix below.

Requirements Matrix

This table records the compliance of each software requirement of natPortal.