This example app shows how to build a basic non-blocking reactive full stack app with Spring Boot 2.0, Spring Data, and Angular 5.0.
The server(Backend) part provides two REST APIs, /stars
and /stars/{id}
that return data from a reactive MongoDB database. And accessing all other actuator endpoints(eg. /actuator/info
, /actuator/env
) requires authorization which is empowered by Spring Security(usernmae,passwords are configured in application.properties).The programming language for backend is using Kotlin. And it brings with a Kotlin routing DSL that allows one to leverage the WebFlux functional API for writing clean and idiomatic code.
The client(Frontend) part is using Angular 5 to present the data list from REST API and provied operation on them. And also add function to retrieve movie star images from a public open movie and TV database TMDB.
Prerequisites: Java 8 (Kotlin TargetJVM 1.8) and Node.js.
To install this example application, run the following commands:
git clone https://github.com/ujjeeq/reactive-spring-boot-angular-moviestar.git
cd reactive-spring-boot-angular-moviestar
This will get a copy of the project installed locally. To install all of its dependencies and start each app, follow the instructions below.
To run the server, directly run:
./gradlew bootRun
then to reach the REST APIs on http://localhost:8080/stars
;
And with username/password set in application.properties, it is possible to access actuator endpoints, like:
curl -u abc:abc123 http://localhost:8080/actuator/info
or by using browsers.
Also there is social Oauth 2.0 login function to access those endpoint.
To run the client, cd into the client
folder and run:
npm install && npm start
then to check the FrontEnd on http://localhost:4200/
.
- Language: Kotlin and TypeScript
- Framework: Spring Boot 2.0 with Spring 5 Kotlin support and Spring WebFlux functional
- Engine: Netty used for client and server
- FrontEnd: Angular
- Reactive API: Reactor
- Persistence : Spring Data Reactive MongoDB
- Build: Gradle
Apache 2.0, see LICENSE