anchor.diff:   .. activeAdmin/password
   +
   .SPAT Login
  -image::./readmeImages/login.jpg[]
  +image::readmeImages/login.jpg[]
   .SPAT Teams Page
  -image::./readmeImages/teams.jpg[]
  +image::readmeImages/teams.jpg[]
   . Login can also be tested to show that invalid users don't work.  Invalid users are:
    .. expiredUser/password
    .. credentialsExpiredUser/password
  
positive.code:  .. disabledUser/password
  +
  .SPAT Bad Login
  image::./readmeImages/bad-login.jpg[]
  
  == IDE Setup
  In Progress
negative.code: :warning-caption: :warning:
  endif::[]
  :toc:
  :source-highlighter: highlightjs
  :icons: font
  
  == Background
  The purpose of this project was to demonstrate a REST service built on Spring Boot 2 that works with an Angular
  5 front end.  It consists of a login page, a teams page, and a users page.  If logged in as the adminUser the
  teams and users pages will show controls for adding, editing, and deleting teams and users respectively.
  
  Some of my goals in this project were to:
  
  . Create an organized and scalable project structure for Spring Boot application and an Angular CLI application
  . Have a clear developer workflow
  . Have a clear build path to production
  . Has web security consisting of a form login, JSON Web Token, and user roles
  . Has front end code that warns user if their session is about to expire
  . Back end unit testing with the ability to separate unit tests from longer running integration tests during the build process.
  . Demonstrates multiple types of HTTP requests (GET, POST, DELETE).
  . Demonstrates multiple types of database operations (SELECT, UPDATE, DELETE).
  . Front end unit testing (In progress)
  
  == Required Software
  * Java 8 (latest JDK was used)
  * Maven 3+ (version 3.5 was used)
  * Node.js (version 8.9.4 was used)
  * Angular CLI (version 1.6.7 was used)
  * Parent POM https://github.com/pcalouche/spring-boot-project-pom[spring-boot-project-pom] project (I use this as a base for multiple spring boot projects)
  
  == Technologies and Frameworks
  * Java 8
  * Maven 3
  * Spring Boot 2.0
  * Angular 5/Angular CLI 1.6.7
  * Bootstrap 4.0 for UI styling
  * JUnit 4 (I have plans to upgrade the test to use JUnit 5)
  * H2 in memory database (This can easily be swapped out for another datasource)
  * Spring JDBC (This can easily be swapped out for another database access method (e.g. JPA, JOOQ, etc.))
  * Node.js for Angular CLI and front end dependency management
  
  == Project Structure
  The project is a multi module Maven project.  It consists of three modules:
  
  . *Rest Services* - A Spring Boot REST service
  . *UI* - A Spring Boot web application for hosting the UI
  . *Shared*  - Contains some common code for both the Rest Services and UI
  
  == How to Run
  [IMPORTANT]
  It is assumed that the required software is installed.
  
  . Download the https://github.com/pcalouche/spring-boot-project-pom[spring-boot-project-pom] project
  . Download the https://github.com/pcalouche/spat[SPAT] project
  . Install the spring-boot-project-pom project
  +
  From inside Spring Boot Project POM main directory:
  
    mvn clean install
  
  . Install Angular CLI version 1.6.7 globally if it is not
  +
    npm install -g @angular/cli@1.6.7
  +
  . Install the SPAT project
  From inside SPAT project main directory:
  +
    mvn clean install
  +
  This will take a couple of minutes, and the following will happen:
  +
  * The rest-services project will be compiled into an executable jar if all unit and integration tests pass.
  * The UI project will into an executable jar if the Angular CLI project and all unit and integration tests pass.
  . Run the REST services executable jar.  This runs at http://localhost:10000/spat/rest-services
  +
    cd <spat_directory>/rest-services/target
  