# FFSAF - Intranet

## Introduction et context

L’intranet de la Fédération française de Soft Armored Fighting a pour but centralise la prise de licences des adhérents
et l’affiliation des clubs. Il permet aussi de recueillir les résultats des compétitions organisées par les clubs et,
plus récemment, d’en faciliter l’organisation grâce à un outil intégré.

Le système de prise de licence se divise en trois parties :

* Un formulaire public pour la première demande d’affiliation ;
* Un espace club, accessible après validation, pour la saisie des informations relatives aux demandes de licence des
  adhérents ;
* Un espace fédération pour accepter les demandes de licences et d’affiliation.
  Un espace membre permet enfin à chaque adhérent de télécharger son attestation de licence.

Pour les compétitions, le système permet la création de catégories, de poules et de matchs, avec génération automatique
des matchs au sein d’une poule. Il supporte plusieurs lices, assure la synchronisation en temps réel des modifications
entre toutes les instances de l’application web et publie automatiquement les résultats sur le site de l’organisateur.

## Running the application in dev mode

You can run your application in dev mode that enables live coding using:

```shell script
./mvnw compile quarkus:dev
```

> **_NOTE:_**  Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.

## Packaging and running the application

The application can be packaged using:

```shell script
./mvnw package
```

It produces the `quarkus-run.jar` file in the `target/quarkus-app/` directory.
Be aware that it’s not an _über-jar_ as the dependencies are copied into the `target/quarkus-app/lib/` directory.

The application is now runnable using `java -jar target/quarkus-app/quarkus-run.jar`.

If you want to build an _über-jar_, execute the following command:

```shell script
./mvnw package -Dquarkus.package.type=uber-jar
```

The application, packaged as an _über-jar_, is now runnable using `java -jar target/*-runner.jar`.

## Creating a native executable

You can create a native executable using:

```shell script
./mvnw package -Dnative
```

Or, if you don't have GraalVM installed, you can run the native executable build in a container using:

```shell script
./mvnw package -Dnative -Dquarkus.native.container-build=true
```

You can then execute your native executable with: `./target/ffsaf-site-1.0-SNAPSHOT-runner`

If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.