diff --git a/README.md b/README.md index a68c37144..231cc297c 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,11 @@ # nrich -Nrich is a Java library developed at CROZ whose purpose is to make development of applications on the JVM a little easier. -It contains modules that were found useful on projects and as such were combined -to a common library. -It is based on Spring Framework, and it also provides Spring Boot starters for most of the modules to make the configuration easier. +Nrich is a Java library developed at CROZ whose purpose is to make development of applications on the JVM a little +easier. +It was created by combining modules that were found useful on multiple projects into a common library. +The library is based on the Spring Framework, and as such provides Spring Boot starters for most of the modules +to make the configuration easier. Most modules are composed of multiple submodules: @@ -17,7 +18,7 @@ Most modules are composed of multiple submodules: - implementation - contains actual api implementation - spring boot starter - has the `spring-boot-starter` suffix and contains Spring Boot autoconfiguration of the specified module -In Spring Boot environment only spring boot starter modules should be added as dependencies. +In the Spring Boot environment only spring boot starter modules should be added as dependencies. ## Compatibility @@ -36,35 +37,41 @@ Nrich is composed of following modules: ### [nrich-bom](nrich-bom/README.md) -Provides managed dependencies for all nrich modules as well as for libraries used inside those modules that are not covered by Spring Boot dependencies. +Provides managed dependencies for all nrich modules as well as for libraries used inside those modules that are not +covered by Spring Boot dependencies. ### [nrich-core-api](nrich-core-api/README.md) -It contains common classes that are used throughout the library. +This module contains common classes that are used throughout the library. ### [nrich-encrypt](nrich-encrypt/README.md) -Provides easier encryption and decryption of data. -It can encrypt method results and decrypt method arguments. -Methods whose results should be encrypted and/or arguments decrypted can be marked using annotations or as properties specified in the property file (such as `application.yml` file). +The module achieves easier encryption and decryption by being able to encrypt method results and +decrypt method arguments. +Methods whose results should be encrypted and/or arguments decrypted can be marked using annotations or as +properties specified in the property file (such as `application.yml` file). ### [nrich-excel](nrich-excel/README.md) -Provides easier generation of excel reports from provided data and templates. Default implementation uses `Apache POI` library but tries to simplify usage. +Provides easier generation of excel reports from provided data and templates. +Default implementation uses `Apache POI`library but tries to simplify usage. ### [nrich-form-configuration](nrich-form-configuration/README.md) Provides mapping of server-side class constraints to client-side form constraints. -Its purpose is to provide a central place for constraint definitions. -The Client registers a form to the class that defines constraints, which enables him to request information for the registered form. +The purpose of `nrich-form-configuration` is to provide a central place for constraint definitions. +The Client registers a form to the class that defines constraints, which enables him to request information for +the registered form. Supplied information contains constraints with their error messages, which are specified in the class. The client is then responsible for processing and applying them to the form. ### [nrich-jackson](nrich-jackson/README.md) -Sets commonly used defaults for standard Jackson properties (as an example `FAIL_ON_EMPTY_BEANS: false`) to avoid repetition in projects. -It also provides Jackson modules that serialize empty strings to -null and serialize class names to fully-qualified class names for classes that are annotated with `@Entity` annotation or are from a package defined in a given list. +Sets commonly used defaults for standard Jackson properties (as an example `FAIL_ON_EMPTY_BEANS: false`) to avoid +repetition in projects. +The module also provides Jackson modules that serialize empty strings to null and serialize class names to +fully-qualified class names for classes that are annotated with `@Entity` annotation or are from a package defined +in a given list. ### [nrich-logging](nrich-logging/README.md) @@ -75,27 +82,29 @@ This module is used in [webmvc](nrich-webmvc/README.md) module for exception log ### [nrich-notification](nrich-notification/README.md) Intended for addition of specified notifications into the server-side response, which can later be shown on the client-side. -It supports three different notification severity levels and can also include a list of validation errors. +`nrich-notification` supports three different notification severity levels and can also include a list of validation +errors. Definition and resolution of messages is realized with Spring's `MessageSource` feature. ### [nrich-registry](nrich-registry/README.md) Simplifies the administration of specified JPA entities and provides a formatted representation of them that client-side can interpret and create dynamic forms and grids. Generated forms and grids can be used for entity editing without additional implementation on server-side. -The Module also provides methods for searching, creating, updating and deleting entities through a REST API. +The module also provides methods for searching, creating, updating and deleting entities through a REST API. ### [nrich-search](nrich-search/README.md) Simplifies the querying of entities. -It is based on top of the Spring Data JPA library and it was created as a means of +`nrich-search` is based on top of the Spring Data JPA library and was created as a means of simplifying the creation of queries for various search forms on the client-side. -Queries can be automatically formed from different types of inputs, such as the property holding class, a string or from a list of search fields, and additional query properties can be defined using -the special configuration class. +Queries can be automatically formed from different types of inputs, such as the property holding class, +a string or from a list of search fields, and additional query properties can be defined using the special +configuration class. ### [nrich-security-csrf](nrich-security-csrf/README.md) Intended as a replacement for Spring Security csrf functionality. -It works with Spring Web MVC and WebFlux libraries. +`nrich-security-csrf` works with Spring Web MVC and WebFlux libraries. Clients should define the initial token url and after that send the generated token with each request in a header or as a parameter. ### [nrich-spring-boot](nrich-spring-boot/README.md) @@ -113,7 +122,8 @@ Contains additional `jakarta-validation-api` constraints and validators that pro ### [nrich-webmvc](nrich-webmvc/README.md) Provides additional functionality built on top of the Spring Web MVC framework. -Main purpose is to handle exceptions through `NotificationErrorHandlingRestControllerAdvice` that handles exceptions by -logging them, and then creating and sending notifications to the client-side with exception's description. -The Module uses the [nrich-notification](nrich-notification/README.md) module for notification handling and [nrich-logging](nrich-logging/README.md) for log handling. -It also adds additional classes that handle binding (in other words transforming empty string to null), locale resolving and the like. +Main purpose is to handle exceptions through `NotificationErrorHandlingRestControllerAdvice` that handles exceptions +by logging them, and then creating and sending notifications to the client-side with exception's description. +The module uses the [nrich-notification](nrich-notification/README.md) module for notification handling and [nrich-logging](nrich-logging/README.md) for log handling. +`nrich-webmvc` also adds additional classes that handle binding (in other words transforming empty string to null) and +locale resolving.