# Lightrun Example Application - Tasks Management

This application exists as an example for the Lightrun series of articles.

## Building

This application requires [Apache Maven](https://maven.apache.org/) and [Java 17+](https://www.oracle.com/java/technologies/downloads/). It does use the Maven Wrapper, so it can be built with only Java available on the path.

As such, building the code is done by executing:

```
$ ./mvnw install
```

from the top level.

## Running

The application consists of three services:

* Tasks
* Users
* API

These are all Spring Boot applications.

The Tasks and Users services exist as microservices for managing one facet of data. Each uses a database, and utilise a JMS queue between them as well. For convenience this infrastructure is all embedded in the applications.

This does mean that the startup order is important. The JMS queue exists within the Tasks service and is connected to from the Users service. As such, the Tasks service must be started before the others.

Each service can be started either by executing `mvn spring-boot:run` from within the appropriate directory. Alternatively, as Spring Boot applications, the build will produce an executable JAR file within the `target` directory that can be executed as, for
example:

```
$ java -jar ./target/tasks-service-0.0.1-SNAPSHOT.jar
```
