anchor.diff:  :warning-caption: :warning:
   endif::[]
   :toc:
  -:source-highlighter: coderay
  +:source-highlighter: highlightjs
   :icons: font
   
  -== Project Background
  +== 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.
  +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 path to production
  +. 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
  -* JUnit 4 (Hope is to upgrade to JUnit 5 and explore those changes)
  -* Maven 3+
  -* H2 in memory database (This easily be swapped out for another datasource)
  -* Spring JDBC for database queries (This too could be swapped our for another Java database technology)
  -
  -== Required Software
  -* Java 8
  -* Maven 3+ (version 3.5 was used)
  +* 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
  -* Parent POM project https://github.com/pcalouche/spring-boot-project-pom[spring-boot-project-pom]
   
   == Project Structure
  -In Progress
  +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
  +[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 the install directory:
  +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 the install directory:
  +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
  
positive.code:  .. disabledUser/password
  +
  .SPAT Bad Login
  image::./readmeImages/bad-login.jpg[]
  
  == IDE Setup
  In Progress
negative.code:  .. activeAdmin/password
  +
  .SPAT Login
  image::readmeImages/login.jpg[]
  .SPAT Teams Page
  image::readmeImages/teams.jpg[]
  . Login can also be tested to show that invalid users don't work.  Invalid users are:
   .. expiredUser/password
   .. credentialsExpiredUser/password
  