<commit_before>= WebApp Tutorial

image:https://travis-ci.org/toedter/webapp-tutorial.svg?branch=master[Build Status, link="https://travis-ci.org/toedter/webapp-tutorial"]
image:http://img.shields.io/badge/license-MIT-blue.svg["MIT", link="http://toedter.mit-license.org"]
image:http://img.shields.io/badge/Gitpod-code%20now-blue.svg?longCache=true["Start Workspace", link="https://gitpod.io#https://github.com/toedter/webapp-tutorial"]

This is tutorial material for building modern web apps with Spring Boot, Spring Data Rest, Angular and TypeScript.
You find the corresponding tutorial slides at
https://speakerdeck.com/toedter/modern-web-apps-with-spring-boot-angular-and-typescript[SpeakerDeck].

image:webapp-tutorial.png[Screenshot]

== Used Technologies

* https://adoptopenjdk.net/[Java (8 or 11)] for the REST services
* https://www.typescriptlang.org/[Typescript] for the web client
* http://stateless.co/hal_specification.html[HAL] (Hypertext Application Language) fpr hypermedia
* https://spring.io/projects/spring-boot[Spring Boot] (+ Data, REST, HATEOAS)
* https://angular.io/[Angular] for web client
* https://junit.org/[JUnit] for Java unit and integration testing
* https://code.google.com/p/mockito/[Mockito] for Mocking
* https://www.gradle.org/[Gradle] as master build system
* https://nodejs.org[Node.js] & https://www.npmjs.com/[npm] for the web client build

== Requirements

* Java 8 or 11 (JDK) installed

You don't need to install Node.js and all the JavaScript tooling,
since those tools are installed automatically by the Gradle build.
It would be convenient to have those tools installed
if you want to use them directly instead of using the Gradle wrapper tasks.

* Optional: Node.js and npm installed

== Getting Started

When you want to run the tutorial locally, prepare all the labs:

* ./gradlew clean build _(builds all the tutorial labs (Java parts + JavaScript parts), runs all the Java tests)_

== Creating a tutorial VM with Vagrant

In the vagrant directory you find a Vagrantfile to create a (German) development environment.

* Install Vagrant and VirtualBox
* Invoke "vagrant up" in a terminal
* Wait for 20 minutes letting Vagrant create the whole virtual machine
* In the VM, log in as vagrant/vagrant and then invoke: startx
* The latest Ubuntu with a simple desktop will start up
* You find this project at /home/vagrant/webapp-tutorial
* All Gradle and JavaScript dependencies are already in the VM
* You find an IntelliJ IDEA trial under /opt
* Open terminal in the IntelliJ/..../bin folder and type ./idea
* Before importing the webapp-tutorial project with Gradle you have to configure the Java 8 JDK
* After starting IntelliJ you have to install the Lombok plugin manually.

== License

MIT, see http://toedter.mit-license.org<commit_msg>docs: removed Vagrant part from README.adoc<commit_after>= WebApp Tutorial

image:https://travis-ci.org/toedter/webapp-tutorial.svg?branch=master[Build Status, link="https://travis-ci.org/toedter/webapp-tutorial"]
image:http://img.shields.io/badge/license-MIT-blue.svg["MIT", link="http://toedter.mit-license.org"]
image:http://img.shields.io/badge/Gitpod-code%20now-blue.svg?longCache=true["Start Workspace", link="https://gitpod.io#https://github.com/toedter/webapp-tutorial"]

This is tutorial material for building modern web apps with Spring Boot, Spring Data Rest, Angular and TypeScript.
You find the corresponding tutorial slides at
https://speakerdeck.com/toedter/modern-web-apps-with-spring-boot-angular-and-typescript[SpeakerDeck].

image:webapp-tutorial.png[Screenshot]

== Used Technologies

* https://adoptopenjdk.net/[Java (8 or 11)] for the REST services
* https://www.typescriptlang.org/[Typescript] for the web client
* http://stateless.co/hal_specification.html[HAL] (Hypertext Application Language) fpr hypermedia
* https://spring.io/projects/spring-boot[Spring Boot] (+ Data, REST, HATEOAS)
* https://angular.io/[Angular] for web client
* https://junit.org/[JUnit] for Java unit and integration testing
* https://code.google.com/p/mockito/[Mockito] for Mocking
* https://www.gradle.org/[Gradle] as master build system
* https://nodejs.org[Node.js] & https://www.npmjs.com/[npm] for the web client build

== Requirements

* Java 8 or 11 (JDK) installed

You don't need to install Node.js and all the JavaScript tooling,
since those tools are installed automatically by the Gradle build.
It would be convenient to have those tools installed
if you want to use them directly instead of using the Gradle wrapper tasks.

* Optional: Node.js and npm installed

== Getting Started

When you want to run the tutorial locally, prepare all the labs:

* ./gradlew clean build _(builds all the tutorial labs (Java parts + JavaScript parts), runs all the Java tests)_

== License

MIT, see http://toedter.mit-license.org
{'fraction_non_alphanumeric': 0.11120331950207468, 'fraction_numerical': 0.003941908713692946, 'mean_word_length': 4.780575539568345, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 28, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1005425', 'n_tokens_mistral': 1524, 'n_tokens_neox': 1436, 'n_words': 487}