M3 Submission (#122) * Backend Boilerplate (#1) * Added an editor configuration file for IDE's to recognise the basic formatting when developing within the frontend solution. * Added a prettier ignore file for both the linting process and IDE's to recognise which files matching the defined patterns should not be reformatted. * Added the prettier configuration file utilised by the linter to determine the appropriate custom linting rules for javascript code. * Implemented additional typescript configuration around code paractices enforced by the linter. * Implemented a feature complete linting configuration applied during the linting process which automatically reformats code to follow both community and industry standards + conventions. * Added additional packages required for linting alongside the script(s) necessary for invoking the linter. * Upadated packages alongside their bianry hashes. * Applied the formatting changes made by the linter. * basic front end + styling configuration * switch view based on button press * unit tests * unit tests * calendar and example employee profile * react-day-picker calendar * unit tests * Implemented as basic (not necessarily needed) application (component) for rendering components and views within the frontend. * Amended the main index file to utilise the application component in the root directory. * Implemented Jest alongside the necessary scripts for running it proactively. * Automatic package updates. * Updated the typescript configuration to include type roots for appropriate package visibility required to do component rollup. * Reformatted the user interface to apply the specified project configuration. * Reformatted the view status interface to apply the specified project configuration. * Migrated the booking component to the appropriate component directory using modern react concepts including typescript functional components, hooks and effects for state management whilst simplifying the implementation. * Migrated the dashboard component to the appropriate component directory using modern react concepts including typescript functional components, hooks and effects for state management whilst simplifying the implementation. * Migrated the booking tests to their respective component directory for better organisation and ownership whilst applying project configuration formatting. * Migrated the dashboard tests to their respective component directory for better organisation and ownership whilst applying project configuration formatting. * Migrated the booking style to their respective component directory for better organisation whilst modifying the naming for conventions and applying project configuration formatting. * Added a booking component rollup file to use when accessing components and interfaces. * Added a dashboard component rollup file to use when accessing components and interfaces. * Added a component rollup file for accessing individual components globally without hardcoding their references all over the place to assist when the project grows and components move around. * Temporarily reduced the output type when function return types aren't explicitly declared from error to warning. * Applied linting to the project files. * Initial Database (#7) * Created the initial database instance (SEPT-32) * Adjusted database, as discussed * Added auto increment to the ID's * Frontend Routing (#9) * Added the reach router packages for configuring routing. * Migrated the application as a component into the appropriate directory. * Introduced component rollup for the application. * Added rollup to the application component functions and interfaces. * Updated the reference to the application component. * Implemented an initial home page for utilisation by routing. * Added the component rollup for the home page. * Implemented an initial dashboard page for utilisation by routing. * Added the component rollup for the dashboard page. * Implemented an overall page rollup so references aren't explicitly assigned to individual pages. * Implemented a route component for use by the reach router component for delegating paths to pages. * Added a component rollup for the route. * Implemented the route component rollup inside the generic components rollup. * Added a router inside of the application for navigation through to pages. * Simplified the dashboard component booking rows rendering through a ternary condition. * Added type definitions for reach router. * Simplified the route component with inference from reach routing types. * Applied linting to the solution after introducing routing amendments. * Infrastructure Environment Configuration (#10) * Implemented an environment file for the development environment which contains the necessary input arguments for configuring the infrastructure remote state resources with proper naming conventions. * Implemented the root configuration file for enabling Terragrunt interoperability over remote envirinment configuration management with component configuration injection. * Designed the functional component directory structure for managing each applications infrastructure as code definitions independently. * Designed the environment configuration component directory structure for managing each applications dynamic configuration definitions independently. * Constructed infrastructure documentation to instruct team members and/or project reviewers of the dynamics around Terraform/Terragrunt infrastructure as code methodology for setup, development as well as execution. * booking info code and revamp to modern js * remove accidental push * Frontend Booking Information (#14) * Frontend UI Component Libary (#15) * Added the ant design package to leverage their rich UI components and layouts. * Reformatted the booking information component. * Added the default application style for ant design. * Added the missing booking interface based on the built component. * Fixed the booking information component from erroring on build/compilation due to missing references. * Removed the configuration for erroring when local variables aren't referenced. * Upgraded the react testing library package. * Automatic lock changes form updating package(s). * Updated all of the necessary UI components for the dashboard page. * Updated all of the necessary UI components for the home page. * Frontend Layouts (#16) * Added a typescript JSX styling package for applying appropriate formats to layouts and designs at a later stage. * Implemented the initial styling prototype without a typescript styling framework. * Upgraded the full width styling to use typscript. * Implemented a layout for a full width sized pages. * Added the rollup for the full width layout. * Removed a full width enhancement with components that do not exist in this PR but will be added later. * Added the root rollup for all layouts which currently only includes the full width layout. * Implemented a padded layout style using typescript. * Implemented a padded layout for utilisation by pages which require side padding with a breadcrumb. * Added the padded layout rollup. * Added the padded layout to the root rollup. * Implemented the styling for the sidebar layout. * Implemented the sidebar layout utilised by pages on such as those on the dashboard which require a secondary menu. * Added the rollup for the sidebar layout. * Added the sidebar layout to the root rollup. * Applied the padded layout to the home page. * Applied the sidebar layout to the dashboard page. * Frontend Heading & Footing (#17) * Implemented a component representing a routable menu item for utilisation in a heading. * Added the menu item rollup. * Added the menu item to the root component rollup. * Implemented a header component style using typescript styling. * Implemented the header component to be utilised by various different layouts. * Added the header component rollup. * Added the header component to the root rollup for components. * Implemented styling for the footer component using typescript. * Implmented the footer component to be utilised by various layouts. * Added the footer component rollup. * Added the footer component to the root rollup for components. * Added a newline separator between component types. * Included the heading and footing components inside of the full width page layout. * Included the heading and footing components inside of the padded page layout. * Included the heading and footing components inside of the sidebar page layout. * Implemented testing against the application for testing appropriate internal routing to various different pages implemented. * Feature/sept 22 booking form (#19) * front end code and revamp to modern js * basic form and formik installation * formik conversion * basic antd formatting * unit test and code comments * moved files from component -> pages * Frontend 404 Not Found Page (#21) * Implemented an extemely basic initial 404 page to get the routing going. * Added the not found page rollup. * Added the not found page to the main page rollup. * Added a newline separation between special pages such as 404 not found. * Implemented the 404 not found route as the default when the request page could not be found. * Added a test to ensure the 404 not found page is working. * Redesigned the 404 not found page. * Infrastructure Binary Restrictions (#22) * Added the terraform version constraint for limiting which specific version of terraform can be used to deploy the infrastructure. * Added the terragrunt version constraint for limiting which version(s) of terragrunt can be used to deploy the infrastructure. * Database Fixes (Data types) (#20) * Created the initial database instance (SEPT-32) * Adjusted database, as discussed * Added auto increment to the ID's * Updated data dype for Price, Postcode, and Mobile number * Adjusted password & username length to make it consistent with other tables * Infrastructure Binaries (#24) * Specified the binary path as a local terragrunt variable. * Specified the path associated with the Terraform binary which will be used for all infrastructure operations. * Initialised git LFS and created the gitattributes file. * Added the Terraform binary for version 0.13.3 associated with the darwin operating system distribution. * Added the Terragrunt binary for version 0.24.4 associated with the darwin operating system distribution. * Added the Terraform binary for version 0.13.3 associated with the linux operating system distribution. * Added the Terragrunt binary for version 0.24.4 associated with the linux operating system distribution. * Added the Terraform binary for version 0.13.3 associated with the windows operating system distribution. * Added the Terragrunt binary for version 0.24.4 associated with the windows operating system distribution. * Removed Breaking Booking Code(#26) * Frontend Pipeline (#27) * Implemented the build pipeline for the frontend. * Implements a build template for javascript applications. * Migrated the pipelines into the infrastructure directory. * Added a checkout step for LFS binaries. * Added a working directory for the build script using a new parameter for the source directory. * Added the directory parameter for building the website and simplified reusability through a common variable. * Specified the agent pool to use for the build. * Added a task for installing the solution packages. * Integrated a testing section to the javascript build process. * Removed the multiline aspect from all the frontend scripts. * Modified the default parameter value for pipeline failure to occur when the build fails to be truthful. * Specified falsy for when the pipeline fails alongside the tests for the timebeing until they're improved. * Frontend Pipeline Testing (#28) * Modified the frontend ci test script to publish coverage results for pipeline consumption. * Added the frontend coverage report file to the ignored file list. * Modified the test script to utilise the pipeline one. * Added a task for publishing junit test results. * Corrected the develop branch name. * Updated the pipeline triggers. * Removed unused exclude. * Frontend Booking Form Bug (#30) * Frontend Production Builds (#29) * Removed the coverage report generated by the frontend build. * Removed unnecessary packages bloating the bundle(s) and added a ci optimised (production) build script. * Refactored the webpack configuration to detect environments and bundle differently depending on the vendors or main implementations as well as removed some unnecessary modules/plugins. * Modified the javascript build template to use the production build. * Updated the frontend directory case sensitivity. * Restored formilk as it's still in use. * Frontend Pipeline Code Coverage (#31) * Added pipeline compatibility with code coverage reports on frontend tests. * Simplified publish task names. * Infrastructure Frontend Website (#32) * Removed the temporary README files which were upholding the directory structure. * Upgraded the Terragrunt binary associated with a darwin based operating system to version 0.25.0 to officially support Terraform 0.13.x. * Upgraded the Terragrunt binary associated with a linux based operating system to version 0.25.0 to officially support Terraform 0.13.x. * Upgraded the Terragrunt binary associated with a windows based operating system to version 0.25.0 to officially support Terraform 0.13.x. * Restructured the formatting for remote AWS resources by utilising region and environment identifiers as a suffix. * Updated function references for Terragrunt commands, fixed the function brackets by closing them appropriate for environment retrieval commands and dpecified a default environment if one isn't provided. * Added a global configuration default for region name which is obtained from the environment configuration file. * Upgraded the Terragrunt version constraint to enforce 0.25.0 as the minimum version prerequisite. * Implemented core routing variables necessary to configure routing resources. * Defined the core routing terragrunt configuration file. * Implemented the resource definitions for AWS core routing. * Added a email record definition which is currently left commented out. * Added the Terraform 0.13.x versions file necessary for configuring the required providers against core routing. * Implemented the core routing outputs generated from created resources to map dependencies from functional components. * Added the development environment core routing configuration variable value(s). * Implemented the website component variables necessary to configure frontend resources. * Defined the website terragrunt configuration file with dependencies. * Implemented the resource definitions for hosting our static website. * Added the Terraform 0.13.x versions file necessary for configuring the required providers against the website component. * Added the website component output variables. * Added resources for creating an SSL certificate for the static website but left it commented out. * Corrected the local development bundle to use the name inferred by the asset chunk when splitting bundles. * Added some comments for splitting sections of the gitignore. * Targeted terraform ignore filed to the infrastructure directory. * Refined the global/general ignored files. * Ignored any artifacts stored in the infrastructure for deployment. * Corrected the function name for retrieving the parent terragrunt configuration directory. * Simplified the path validation. * Initialised the component website configuration file for development. * Modified the artifact directory validation condition to align with the others. * Added better coverage for file coverage to automatic kick off builds & releases on the frontend. * Added a distributable removal when building the frontend to ensure only set of changes exist. * Updated ci build invalid removal option. * Frontend Login Capabilities (#35) * Implemented a react context for the user session. * Added a roll up for the user context. * Implemented a global roll up for contexts with the user context included. * Implemented the user context provider against the main application entrypoint for component utilisation. * Upgraded the header component to utilise the user context for rendering profile information and restricted pages. * Implemented a generic menu modal component. * Added a component roll up for the menu modal. * Added the menu modal to the global component roll up. * Implemented a login component for usage in any aspect for implementing user login functionality with sample data interacting with the user context. * Added the login component roll up. * Added the login component to the global component roll up. * Frontend Registration Capabilities (#36) * Implemented a complete registration page utilising various components and dynamics. * Added the registration page roll up. * Added the registration page to the root roll up. * Added the registration page route to the application. * Removed commented out lines for the backend model used to mock the inputs. * Backend Login (#33) * Backend code for login functionality * mvnw files * gitignore files * .gitnignore delete * new files Co-authored-by: s3539747 <[email protected]> * Backend Registration (#34) * Backend code for login functionality * Backend code for registration functionality * gitignore * gitignore * gitignore files * .gitignore delete Co-authored-by: s3539747 <[email protected]> * Authentication/User Pipeline (#38) * Initialised the authentication pipeline. * Initialised the java build template. * Added some basic tasks around the java build template using maven. * Specified the pipeline definition for the authentication component. * Corrected the backend pipeline template directory location. * Addressed template indentation applied by the IDE. * Finalised the validation task for preparing build requirements as part of the maven lifecycle. * Added remaining tasks for building a java solution using maven with the lifecycle inferred by maven. * Added a test task for viewing the project outputs. * Added a template parameter for optionally skipping tests. * Removed the test task. * Registration Test Failures (#39) * fixed test, and gitignore * deleted target in sept-registration * Registration Pipeline (#41) * Implemented the registration pipeline leveraging the java/maven build template. * Corrected one of the trigger paths for inclusions. * Added a parameter for determining whether a test failure will result in an entire pipeline failure for the java/maven builds which is enabled by default. * Specified for the pipeline not to fail when tests do. * Registration Deployment (#42) * ignore deployment folder * ignore env_file * revert deployment ignore * adjusted @generated to fit MySQL * Add Dockerfile, and sample env_file.example. Adding instructions in README on how to Build & Run docker image * gitignore * Adjusted the env in env_file, and README changes * removed sensitive information * Frontend Profile (#43) * Implemented a basic profile page. * Added a paged component rollup. * Added the profile page to the global page rollup. * Added the profile page as a route in the application. * Added a profile test for routing in the application. * Designed and implemented the ui/features for most of the profile functionality. * Utilised the user context for some profile information. * Ignored DS store... * Removed store. * Added profile form editing functionality. * Feature/sept 46 dashboard backend (#40) * backend get functions * hooking up backend to frontend * load data from backend attempt * axios requests reading backend * DashboardService changes as per PR * booking data as state * reading from backend * Comments * removed dashboard component, added basic tests * M2 Submission Documentation - Adds documentation and folders for M2 - Contains: --Planning for S2-4 --Retros and Reviews for S2 and 3 Note: 4 Not included as it was not yet completed at the time. --Meeting minutes for S2-4 --Larger screenshots for the website --Discord Conversation log --Infrastructure /Release process image * Revert "M2 Submission Documentation" This reverts commit f75a20bf5d1cd8e2548a1c78955d5729e0da2089. * M2 Documentation (#46) * M2 Submission Documentation - Adds documentation and folders for M2 - Contains: --Planning for S2-4 --Retros and Reviews for S2 and 3 Note: 4 Not included as it was not yet completed at the time. --Meeting minutes for S2-4 --Larger screenshots for the website --Discord Conversation log --Infrastructure /Release process image * Revert "M2 Submission Documentation" This reverts commit f75a20bf5d1cd8e2548a1c78955d5729e0da2089. * M2 Submission Documentation - Adds documentation and folders for M2 - Contains: --Planning for S2-4 --Retros and Reviews for S2 and 3 Note: 4 Not included as it was not yet completed at the time. --Meeting minutes for S2-4 --Larger screenshots for the website --Discord Conversation log --Infrastructure /Release process image * Registration Pipeline Container Publishing (#45) * ignore deployment folder * ignore env_file * revert deployment ignore * adjusted @generated to fit MySQL * Add Dockerfile, and sample env_file.example. Adding instructions in README on how to Build & Run docker image * Added docker container registry login, build and push tasks. * Aligned the contaienr registry connection. * Corrected repository name. * Updated the registry name. * Updated the build id. * Created a template for authorising, building and pushing containers into the AWS registry. * Modified functionality to utilise the template for container interaction. * Added environment file generation. Co-authored-by: Giorady <[email protected]> * Documentation update : DOD PDF (#47) * M2 Submission Documentation - Adds documentation and folders for M2 - Contains: --Planning for S2-4 --Retros and Reviews for S2 and 3 Note: 4 Not included as it was not yet completed at the time. --Meeting minutes for S2-4 --Larger screenshots for the website --Discord Conversation log --Infrastructure /Release process image * Revert "M2 Submission Documentation" This reverts commit f75a20bf5d1cd8e2548a1c78955d5729e0da2089. * M2 Submission Documentation - Adds documentation and folders for M2 - Contains: --Planning for S2-4 --Retros and Reviews for S2 and 3 Note: 4 Not included as it was not yet completed at the time. --Meeting minutes for S2-4 --Larger screenshots for the website --Discord Conversation log --Infrastructure /Release process image * Update Milestone 2 Definition of Done.docx * DOD to pdf Updated DOD to a PDF instead of a docx * Deployment for login (#48) * Deployment files * Modified readme * dockerfile attempt (#44) * dockerfile attempt * fixed gitignore, restore + refactor files * Authentication Pipeline Containers (#49) * Integrated the container push for auth. * Added registry name variable reference. * Dashboard Pipeline (#51) * Profile Integration (#52) * Dashboard ECS (#53) * Temporary removal of the dashboard apis. * Readded the apis with directory lowercased. * Refactored existing api implementation. * Added a rollup for dashboard api functions. * Package updates. * Initialised the rollup. * Removed old dashboard api. * Updated dashboard server. * Removed registration references. * Profile Pipeline (#54) * Registration service defined (#55) * Temporary removal of the dashboard apis. * Readded the apis with directory lowercased. * Refactored existing api implementation. * Added a rollup for dashboard api functions. * Package updates. * Initialised the rollup. * code update (#50) * Deployment for login (#48) * Deployment files * Modified readme * dockerfile attempt (#44) * dockerfile attempt * fixed gitignore, restore + refactor files * Authentication Pipeline Containers (#49) * Integrated the container push for auth. * Added registry name variable reference. Co-authored-by: Muhammad Giorady <[email protected]> Co-authored-by: s3539747 <[email protected]> * registraton service Co-authored-by: Nick Mladenov <[email protected]> Co-authored-by: Muhammad Giorady <[email protected]> Co-authored-by: s3539747 <[email protected]> * Doc2 (#57) * M2 Submission Documentation - Adds documentation and folders for M2 - Contains: --Planning for S2-4 --Retros and Reviews for S2 and 3 Note: 4 Not included as it was not yet completed at the time. --Meeting minutes for S2-4 --Larger screenshots for the website --Discord Conversation log --Infrastructure /Release process image * Revert "M2 Submission Documentation" This reverts commit f75a20bf5d1cd8e2548a1c78955d5729e0da2089. * Conflict resolver * Removed conflict. Co-authored-by: Nick Mladenov <[email protected]> * Submission Document (#59) * Remove submission. * Update dsubmission. * Remote API Misreferenced (#60) * Completed all the missing tests & error messages (#62) * Infrastructure Core DNS (#64) * Removed the core routing implementation for refactoring. * Added the core DNS variables for configuration to a particular environment. * Added the implementation for creating the environment zone using a FQDN. * Added the necessary outputs for DNS dependency mapping in other workspaces. * Added the Terragrunt configuration file for core DNS. * Added the version information for providers with Terraform 0.13. * Updated the website dependency and variable injection to reflect core DNS changes. * Added the development environment core dns configuration. * Pipeline Git LFS Capacity Limits (#65) * Disabled git LFS checkout on the backend authentication pipeline. * Disabled git LFS checkout on the backend dashboard pipeline. * Disabled git LFS checkout on the backend profile pipeline. * Disabled git LFS checkout on the backend registration pipeline. * Disabled git LFS checkout on the frontend website pipeline. * Infrastructure Core Networking (#66) * Created the orchestration variables for determining the region. * Created an initial Terragrunt configuration file for core orchestration. * Created the orchestration definiiton with the AWS provider initialised. * Created the outputs file for the orchestration. * Created the orchestration versions file for AWS provider(s) with Terraform 0.13. * Created the core orchestration networking variables. * Implemented the orchestration networking using various AWS modules for isolated VPC instance(s) per environment. * Created the outputs file for referencing important orchestration networking resources. * Created the orchestration networking versions file for AWS provider(s) with Terraform 0.13. * Added the necessary environment variables for configuring the orchestration networking. * Added the orchestration networking module for deployments. * Added the orchestration configuration for networking. * Infrastructure Core Cluster (#67) * Implemented the variables necessary for EKS Kubernetes Cluster setup. * Implemented the EKS Cluster resources wired to the network (VPC). * Added any outputs for dependencies into other modules for the EKS Cluster configuration. * Added the versions file for provider initialisation with Terraform 0.13. * Added the cluster module into the core orchestration deployment. * Added the necessary orchestration variables to support the cluster deployment. * Added the associated variables for the core orchestration in the development environment. * Infrastructure Cluster Namespaces (#68) * Determined the appropriate variables for modular namespace creation. * Implementation for the namespace creation within a Kubernetes instance. * Created the outputs file. * Added the versions file for provider specification with Terraform 0.13 compatibility. * Added the amespace creation to the cluster definition. * Added a variable for specifying the namespaces to create within the cluster. * Specified the namespaces to provision for the orchestrated Kubernetes cluster. * Infrastructure Cluster RBAC (#69) * Specified the variables necessary for enabling RBAC against users. * Implemented the Kubernetes cluster roles associated with that membership group with permissions applied. * Created the RBAC outputs file. * Added the versions file for specifying the provider versions for Terraform 0.13 compatibility. * Added the RBAC module to the cluster. * Registration integration backend-frontend (#71) * Infrastructure Cluster Node Management (#70) * Specified all of the necessary inputs for creating a spot termination service in Kubernetes to manage EKS spot instances with autoscaling. * Implemented the spot instance management using Helm chart(s) created by AWS for automatically rotating instances once they've been cancelled. * Added the outputs file. * Created the versions file for specifying provider information with Terraform 0.13 compatibility. * Specified the necessary inputs to the spot termination module for creation via the orchestration workspace. * Implemented the spot termination module with all necessary references. * Created the outputs file. * Referenced the cluster addon module from the main orchestration workspace. * Infrastructure Cluster Ingress (#72) * Specified the necessary inputs for nginx ingress to be configured. * Implemented the deployment of nginx ingress using Helm chart(s) with dynamic ingress annotations actioned via Kubernetes. * Created the outputs file for dependency linking against the elastic load balancer host. * Added the versions file for specifying providers with Terraform 0.13 compatibility. * Specified the variables necessary as inputs from the orchestrator to provision nginx. * Implemented the nginx deployment model using the module created. * Infrastructure Cluster Routing (#73) * Implemented the routing resources in asure via elasic load balancers with an SSL certificate being validated. * Created an output for dependency mapping via orchestration on elb domain(s). * Created the versions file for providers used with Terraform 0.13 for compatibility. * Implemented the routing deployment via underlying modules mapped with they inputs and dependencies. * Added the base domain reference within the orchestration variables. * Specified an explict dependency with core dns and mapped the input via automatic dependency injection using inputs. * Modified the automatic variable input injection against the root configuration to provide an environment name and resource suffix. * Code for update user profile attributes + fixed application.yaml in login as well (#63) * Backend support course for login, and integration for login (#74) * Infrastructure Application Deployments (#75) * Updated the nginx module to reference the updated service name in the defined namespace. * Implemented the kubernetes provider definition for core orchestration. * Implemented the helm provider definition for core orchestration. * Added a local reference for outputting the kubernetes provider configuration to use with application dependencies and deployments. * Added the necessary cluster information for dependencies on core orchestration. * Created all of the necessary variable inputs for application deployments. * Implemented the application resources for deployment into Kubernetes with a service configuration and ingress with nginx annotations. * Created the outputs file. * Feature/sept 23 booking form backend sql (#77) * entity mapping and booking adding * service tests * Update to development code (#76) * Infrastructure Core Networking (#66) * Created the orchestration variables for determining the region. * Created an initial Terragrunt configuration file for core orchestration. * Created the orchestration definiiton with the AWS provider initialised. * Created the outputs file for the orchestration. * Created the orchestration versions file for AWS provider(s) with Terraform 0.13. * Created the core orchestration networking variables. * Implemented the orchestration networking using various AWS modules for isolated VPC instance(s) per environment. * Created the outputs file for referencing important orchestration networking resources. * Created the orchestration networking versions file for AWS provider(s) with Terraform 0.13. * Added the necessary environment variables for configuring the orchestration networking. * Added the orchestration networking module for deployments. * Added the orchestration configuration for networking. * Infrastructure Core Cluster (#67) * Implemented the variables necessary for EKS Kubernetes Cluster setup. * Implemented the EKS Cluster resources wired to the network (VPC). * Added any outputs for dependencies into other modules for the EKS Cluster configuration. * Added the versions file for provider initialisation with Terraform 0.13. * Added the cluster module into the core orchestration deployment. * Added the necessary orchestration variables to support the cluster deployment. * Added the associated variables for the core orchestration in the development environment. * Infrastructure Cluster Namespaces (#68) * Determined the appropriate variables for modular namespace creation. * Implementation for the namespace creation within a Kubernetes instance. * Created the outputs file. * Added the versions file for provider specification with Terraform 0.13 compatibility. * Added the amespace creation to the cluster definition. * Added a variable for specifying the namespaces to create within the cluster. * Specified the namespaces to provision for the orchestrated Kubernetes cluster. * Infrastructure Cluster RBAC (#69) * Specified the variables necessary for enabling RBAC against users. * Implemented the Kubernetes cluster roles associated with that membership group with permissions applied. * Created the RBAC outputs file. * Added the versions file for specifying the provider versions for Terraform 0.13 compatibility. * Added the RBAC module to the cluster. * Registration integration backend-frontend (#71) * Infrastructure Cluster Node Management (#70) * Specified all of the necessary inputs for creating a spot termination service in Kubernetes to manage EKS spot instances with autoscaling. * Implemented the spot instance management using Helm chart(s) created by AWS for automatically rotating instances once they've been cancelled. * Added the outputs file. * Created the versions file for specifying provider information with Terraform 0.13 compatibility. * Specified the necessary inputs to the spot termination module for creation via the orchestration workspace. * Implemented the spot termination module with all necessary references. * Created the outputs file. * Referenced the cluster addon module from the main orchestration workspace. * Infrastructure Cluster Ingress (#72) * Specified the necessary inputs for nginx ingress to be configured. * Implemented the deployment of nginx ingress using Helm chart(s) with dynamic ingress annotations actioned via Kubernetes. * Created the outputs file for dependency linking against the elastic load balancer host. * Added the versions file for specifying providers with Terraform 0.13 compatibility. * Specified the variables necessary as inputs from the orchestrator to provision nginx. * Implemented the nginx deployment model using the module created. * Infrastructure Cluster Routing (#73) * Implemented the routing resources in asure via elasic load balancers with an SSL certificate being validated. * Created an output for dependency mapping via orchestration on elb domain(s). * Created the versions file for providers used with Terraform 0.13 for compatibility. * Implemented the routing deployment via underlying modules mapped with they inputs and dependencies. * Added the base domain reference within the orchestration variables. * Specified an explict dependency with core dns and mapped the input via automatic dependency injection using inputs. * Modified the automatic variable input injection against the root configuration to provide an environment name and resource suffix. * Code for update user profile attributes + fixed application.yaml in login as well (#63) * Backend support course for login, and integration for login (#74) * Infrastructure Application Deployments (#75) * Updated the nginx module to reference the updated service name in the defined namespace. * Implemented the kubernetes provider definition for core orchestration. * Implemented the helm provider definition for core orchestration. * Added a local reference for outputting the kubernetes provider configuration to use with application dependencies and deployments. * Added the necessary cluster information for dependencies on core orchestration. * Created all of the necessary variable inputs for application deployments. * Implemented the application resources for deployment into Kubernetes with a service configuration and ingress with nginx annotations. * Created the outputs file. Co-authored-by: s3539747 <[email protected]> Co-authored-by: Muhammad Giorady <[email protected]> * Unit tests * Revert "Update to development code (#76)" (#78) This reverts commit eab1745c4aa810be99b5ea00eca655019e59583a. Co-authored-by: s3539747 <[email protected]> Co-authored-by: Muhammad Giorady <[email protected]> * Infrastructure Service Accounts (#79) * Devised the orchestration service account variables to provision the necessary service accounts in the cluster scoped to certain namespaces for the environment. * Implemented the service account resources within the Kubernetes cluster with appropriate roles/permissions attached. * Created the service account outputs containing Kubernetes access token for connection to the environment for cicd. * Added the versions file for specifying provider versions with terraform version 0.13 compatibility. * Added the service account deployment to the orchestration workspace with the kuebrnetes token outputted leveraging the environment service account credentials. * Feature/sept 111 booking form refactor (#81) * replace formik with antd * form returning correct values for booking creation * booking date format * add employee field, update time * Feature/sept 107 frontend integration profile (#80) * Profile integration frontend-backend * delete .env * .gitignore add .env * Env variables * Feature/sept 114 booking backend refactor (#82) * booking entity rewrite * booking repo rewrite * booking service rewrite * controller refactor * test refactor + expanded existence tests * Pipeline AWS Secrets (#83) * Implemented a template for retrieving application configuration from AWS secret management. * Added a template for obtaining the application secrets from AWS. * Added a temporary task for obtaining all environment variables. * Corrected the environment variable reference. * Added an output for mapping secrets. * Updated the iteration to separate values by commas. * Corrected the jq parsing when special characters are present inside the key. * Temporarily added the value retrieved to output. * Added another verbose output. * Removed tests. * Corrected the environment variable evaluation by escaping nested quotes. * Removed the complete environment list. * Added a task to the secret list for displaying the secrets set. * Added a parameter for showing set environment variables when specified during debugging. * Enabled the debugging secrets output. * Updated the parameter type. * Addressed task indentation. * Pipeline Docker Build Arguments (#84) * Added a parameter for supporting dockerfile build arguments. * Added a task for building the docker container with additional arguments when they're supplied. * Modified the existing build and push task to only push the container as it has already been built. * Added as default value for the base directory where the dockerfile is located. * Added a test at the end for files. * Added a custom argument for the jar file location. * Added a temporary task for displaying pipeline environment variables. * Removed the file list test. * Added the default tag for jar file location to authentication api. * Added the default tag for jar file location to registration api. * FrontEnd Environment File Fix (#85) * revert env variables * package & webpack * webpack * Bugfix/sept 126 build fix, tests error fix, and defaults for env (#86) * Fixed build error & tests error for login & registration * added defaults * sens cred * Feature/sept 108 booking backend integration (#87) * hookup backend and frontend * log backend response * yarn.lock update * dockerize and prepare backend for deployment * switch to application.yml * default values and removed dotenv * axios URI * changed port, added .env to gitignore * mistyped default port * Kubernetes Application Deployment Nginx Rewrite (#89) * Corrected the condition used for rewriting the ingress target onwards to the application. * Updated gitignore files. * Pipeline Secrets - Authentication, Registration, Profile (#88) * Updated the JWS environment variable name. * Added the database endpoint as an environment variable for the application. * Updated the database username environment variable. * Updated the database password environment variable. * Defined the application port. * Defined the database driver. * Modified the method for retrieving the driver. * Commented out env file generation. * Added secret retrieval to the registration pipeline. * Removed environment file generation for registration. * Added the secret retrieval to the profile pipeline. * Booking API Pipeline (#90) * Implemented the booking api pipeline. * Removed the ability for showing the environment variables retrieves from AWS due to Azure not masking the secrets consistently. * Dashboard Containerisation (#92) * refactor and env variable set-up * Dockerize * added .env to gitignore and changed ports * backend changes * remove .env * Booking Database Purge After Testing (#91) * empty db after test * remove mockbookings from db after tests * remove deleteAll() * removed .env * .env removal * Pipeline Deployment Template (#94) * Implemented a IaC deployment template to currently install the necessary binaries. * Added a temporary test pipeline for core deployments using IaC. * Updated the permissions for moving files on the agent operating system. * Added the pipeline revision number. * Added permission alignment for binary installation. * Updated the terragrunt deployment version. * Implemented the ability to run infrastructure actions against core and components. * Updated the test to plan core dns. * Updated the AWS connection name. * Included the working directory directly inside the Terragrunt command. * Updated the terraform evalation. * Updated command output. * Directory change to the infrastructure root. * Copying binaries into appropriate infrastucture directory. * Added execution iteration for initialising first. * Added an environment definition for deployment. * Corrected the environment variable definition block. * Corrected deployment iteration. * Added working directory. * Customised command behaviours. * Added verbose logging. * Enhanced command. * Removed init command. * Added a tree command. * Removed version location temporarily. * Restored binary location. * Added environment variable output. * Removed disableAutoCwd. * Test different script type. * Restructured env. * Removed location. * Indentation. * Restored format. * Local terragrunt. * Error outputs. * Permissions. * Added join. * Explicit reference to config file. * Removed join. * Updated terragrunt version..... * Removed tree. * Reset working dir and removed default config file declaration. * Removed permission adjustment. * Missing closing quote. * Removed test core pipeline. * Booking API Infrastructure (#95) * Defined the variable inputs necessary for the booking api component infrastructure. * Implemented the component infrastructure associated with the booking api. * Setup the terragrunt configuration file for the booking api. * Created the output file. * Initialised the versions file for Terraform 0.13 compatibility with providers. * Specified the booking api component configuration for the development environment. * Registration API Infrastructure (#97) * Defined the variable inputs necessary for the registration api component infrastructure. * Implemented the component infrastructure associated with the registration api. * Created the output file. * Setup the terragrunt configuration file for the registration api component. * Initialised the versions file for Terraform 0.13 compatibility with providers. * Specified the registration api component configuration for the development environment. * add missing extension to DockerFile (#98) * Dashboard API Infrastructure (#99) * Defined the variable inputs necessary for the dashboard api component infrastructure. * Implemented the component infrastructure associated with the dashboard api. * Setup the terragrunt configuration file for the dashboard api component. * Created the output file. * Initialised the versions file for Terraform 0.13 compatibility with providers. * Specified the dashboard api component configuration for the development environment. * Authentication API Infrastructure (#100) * Defined the variable inputs necessary for the authentication api component infrastructure. * Implemented the component infrastructure associated with the authentication api. * Setup the terragrunt configuration file for the authentication api component. * Created the output file. * Initialised the versions file for Terraform 0.13 compatibility with providers. * Specified the authentication api component configuration for the development environment. * Profile API Infrastructure (#101) * Defined the variable inputs necessary for the profile api component infrastructure. * Implemented the component infrastructure associated with the profile api. * Setup the terragrunt configuration file for the profile api component. * Created the output file. * Initialised the versions file for Terraform 0.13 compatibility with providers. * Specified the profile api component configuration for the development environment. * Core Infrastructure Pipeline (#102) * Implemented a staged deployment template for the Terraform lifecycle. * Created a core deployment pipeline for deploying core infrastructure with all Terraform lifecycles independently. * Separated the environments for each action type. * Added uniqueness to each stage name when deploying multiple components. * Clarified the name for orchestration deployments. * Updated dependency names. * Addded a mandatory directory specification for the root Infrastructure location when running deployments. * Added the missing directory for Infrastructure during plans. * Added execution permission override for infrastructure bianaries. * Booking Tests Failures (#93) * Creation test fix * formatting * delete by object rather than id * comment out exist test to check pipeline * missing extension in dockerfile * save mockBooking differently for one test * update application_container.tag * Bugfix/sept 126 api backend & frontend routing (#96) * Fixed build error & tests error for login & registration * added defaults * sens cred * fixed backend routing * /profile to /me * frontend api routing adjustments * modified the doc * modified the url * fixed readme & profile to me * base urls * Update FrontEnd/src/api/login/LoginService.ts Co-authored-by: s3539747 <[email protected]> * Update FrontEnd/src/api/profile/ProfileService.ts Co-authored-by: s3539747 <[email protected]> * Update FrontEnd/src/api/profile/ProfileUpdateService.ts Co-authored-by: s3539747 <[email protected]> * Update FrontEnd/src/api/registration/RegistrationService.ts Co-authored-by: s3539747 <[email protected]> * updated app_container tags Co-authored-by: s3539747 <[email protected]> * Booking Navigation (#103) * incorrect URI * change cross cross origin set to wildcard * add booking form to navbar * changed <div> to react frag * update application_container.tag * Booking API Pipeline Deployments (#104) * Added infrastructure artifact publishing. * Modified the environment to be provided through the template parameters to differ application deployment permissions. * Added the deployment template targeting the booking api component infrastructure definition. * Updated the template location for components. * Corrected the deployment stage name. * Added the ability to skip a build. * Removed verbosity on deployments. * Corrected condition. * Dashboard API Pipeline Deployments (#105) * Added an infrastructrue publishment task for release consumption. * Added a pipeline parameter for accepting a custom application port. * Implemented the ability to retrieve the necessary secrets for testing during the build. * Allowed the the build process to be skipped for deployments. * Implemented the ability to deploy the dashboard api using the infrastructure template. * Registration API Pipeline Deployments (#108) * Implemented a publishing activity for passing infrastructure artifact(s) onto the subsequent deployment stages. * Implemented the ability to skip the build activities for deployment runs. * Implemented the deployment stages for registration api using deployment template(s). * Authentication API Pipeline Deployments (#107) * Added the ability to specify a custom application port during build. * Added a task for publishing the infrastructure artifact to assist with deployment. * Implemented the ability to skip building and progress with deployment. * Implemented deployment capabilities for authentication api reusing existing templates. * Profile API Pipeline Deployment (#109) * Implemented a publishing activity for passing infrastructure artifact(s) onto the subsequent deployment stages. * Implemented the ability to skip the build activities for deployment runs. * Implemented the deployment stages for profile api using deployment template(s). * Added the missing store for pulling secrets. * Dashboard Endpoint Adjustments (#106) * changed endpoint * Changed cross origin * changed container tag * Pipeline Infrastructure Indefinite Delays (#110) Addresses the issue where destruction stages are halting due to an interactive prompt being present in the pipeline. * change UPCOMING_STATUS to match backend (#111) * Bugfix/sept 126 CORS & SQL (#113) * Fixed build error & tests error for login & registration * added defaults * sens cred * fixed backend routing * /profile to /me * frontend api routing adjustments * modified the doc * modified the url * fixed readme & profile to me * base urls * Update FrontEnd/src/api/login/LoginService.ts Co-authored-by: s3539747 <[email protected]> * Update FrontEnd/src/api/profile/ProfileService.ts Co-authored-by: s3539747 <[email protected]> * Update FrontEnd/src/api/profile/ProfileUpdateService.ts Co-authored-by: s3539747 <[email protected]> * Update FrontEnd/src/api/registration/RegistrationService.ts Co-authored-by: s3539747 <[email protected]> * updated app_container tags * allowed-origins * app tag Co-authored-by: s3539747 <[email protected]> * Static Website Pipeline Deployments (#112) * Implemented a website artifact publishing script to utilise inside the pipeline. * Added the ability to switch between build procedures to configure infrastructure deployments. * Added the ability to optionally deploy infrastructure. * Added the ability to deploy the website alongside infrastructure using the deployment template. * Addressed conditionals expression. * Addressed remaining conditions. * Simplified conditions. * Updated template location. * Application Pipeline CI Latest Deployment (#114) * Implemented a configuration patching script for updating component tags in tfvars. * Updated parameter position. * Added the ability to automatically deploy the latest tag on automatic builds for the authentication api. * Added the ability to automatically deploy the latest tag on automatic builds for the booking api. * Added the ability to automatically deploy the latest tag on automatic builds for the dashboard api. * Added the ability to automatically deploy the latest tag on automatic builds for the profile api. * Added the ability to automatically deploy the latest tag on automatic builds for the registration api. * Reverted unwanted commit. * Updated image tag argument. * Updated parameter positioning. * Updated arguments formatting to avoid newlines invalidating the script. * Feature/sept 134 dashboard backend tests (#115) * search unit tests * re-added application.yml * CORS MAPPING FIX (#116) * Fixed build error & tests error for login & registration * added defaults * sens cred * fixed backend routing * /profile to /me * frontend api routing adjustments * modified the doc * modified the url * fixed readme & profile to me * base urls * Update FrontEnd/src/api/login/LoginService.ts Co-authored-by: s3539747 <[email protected]> * Update FrontEnd/src/api/profile/ProfileService.ts Co-authored-by: s3539747 <[email protected]> * Update FrontEnd/src/api/profile/ProfileUpdateService.ts Co-authored-by: s3539747 <[email protected]> * Update FrontEnd/src/api/registration/RegistrationService.ts Co-authored-by: s3539747 <[email protected]> * updated app_container tags * allowed-origins * app tag * Fixed routing * cors issue & main.tf fix * final fix ;) * latest tag * removed .env contents Co-authored-by: s3539747 <[email protected]> * Milestone 3 Documentation * Documentation (#118) * M2 Submission Documentation - Adds documentation and folders for M2 - Contains: --Planning for S2-4 --Retros and Reviews for S2 and 3 Note: 4 Not included as it was not yet completed at the time. --Meeting minutes for S2-4 --Larger screenshots for the website --Discord Conversation log --Infrastructure /Release process image * Revert "M2 Submission Documentation" This reverts commit f75a20bf5d1cd8e2548a1c78955d5729e0da2089. * Milestone 3 Documentation * Updated Project Report Added Pipeline Workflow diagram and updated Report to match * Added M1 and M2 Submissions Added M1 and M2 submission folders to the repo * Submission Documentation: Deployments (#119) * Added the necessary deployment instructions for both local and remote (pipeline) against infrastructure core and application/components. * Added a copy of the infrastructure documents inside of the M3 submission. * Updated the deployment instructions document to be more apparent to the markers.... * Documentation (#121) * M2 Submission Documentation - Adds documentation and folders for M2 - Contains: --Planning for S2-4 --Retros and Reviews for S2 and 3 Note: 4 Not included as it was not yet completed at the time. --Meeting minutes for S2-4 --Larger screenshots for the website --Discord Conversation log --Infrastructure /Release process image * Revert "M2 Submission Documentation" This reverts commit f75a20bf5d1cd8e2548a1c78955d5729e0da2089. * Milestone 3 Documentation * Updated Project Report Added Pipeline Workflow diagram and updated Report to match * Added M1 and M2 Submissions Added M1 and M2 submission folders to the repo * Contribution changes * Delete M3 Submission.docx * FIxed Missing diagram and contribution changes * MORE CONFLICT ISSUES. Co-authored-by: s3601172 <[email protected]> Co-authored-by: Muhammad Giorady <[email protected]> Co-authored-by: Thanh <[email protected]> Co-authored-by: Gihan Abenayake (s3779792) <[email protected]> Co-authored-by: Gihan Abenayake (s3779792) <[email protected]> Co-authored-by: Giorady <[email protected]>