/webapp-tutorial

This is tutorial material for building web apps with Spring Boot, Spring Data Rest, Angular 2 and TypeScript.

Primary LanguageCSSMIT LicenseMIT

WebApp Tutorial

Build Status MIT

This is tutorial material for building web apps with Spring Boot, Spring Data Rest, Anguluar 2 and TypeScript.

Used Technologies

  • Java 8 for the REST services

  • Typescript for the web client

  • HAL (Hypertext Application Language) fpr hypermedia

  • Spring Boot (+ Data, REST, HATEOAS)

  • Angular for web client

  • JUnit for Java unit and integration testing

  • Mockito for Mocking

  • Gradle as build system

  • Node.js, npm, webpack for the web client build

Requirements

  • Java 8 (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. But 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