# PrestaKit

PrestaKit is a library that provides a set of services to help developers build a Prestation application.

It is composed of two parts:

- prestations-ng (frontend library)
- prestations-be (backend library)

Best practice guide online in our DGNSI WiKi at [https://dgnsiwiki.etat-de-vaud.ch/outils/dgnsiwiki/x/V4EKNg](https://dgnsiwiki.etat-de-vaud.ch/outils/dgnsiwiki/x/V4EKNg)

## Notes about versioning in Prestakit

This project does not follow the Semantic Versioning principles, since it is made to be used with its backend counterpart [prestations-be](https://dsigit.etat-de-vaud.ch/outils/git/projects/CYBSDK/repos/prestations-be/browse).

The goal is to be able to quickly identify which combination of both library should be used together

- **Major version** : updated when a [breaking change](#breaking-change) is introduced in either library
- **Minor version** : updated when a change has an impact on both library
- **Patch version** : updated when a change has an impact on a specific library (can be more than an actual patch but shouldn't force you to change your code)

e.g.

- you **cannot** use prestations-be@**14**.0.2 and prestations-ng@**13**.0.0
- you **cannot** use prestations-be@14.**0**.0 and prestations-ng@14.**1**.0
- you **can** use prestations-be@**14.0**.2 and prestations-ng@**14.0**.17

### Breaking change

A change is considered **breaking** if you have to change your code or update your external dependencies (e.g. Spring Boot or Angular)

- In some specific case, we allow ourselves to not consider a change as breaking if the fix is "easy"
    - adding a new constructor argument in one of our service is OK, if you just have to update your constructor's signature and your call to `super(...)`
