# 🏗️ BTPXpress Client (Frontend)

**Interface web d'administration BTP** — Quarkus + JSF + PrimeFaces Freya

[![Quarkus](https://img.shields.io/badge/Quarkus-3.27.3_LTS-blue)](https://quarkus.io/)
[![Java](https://img.shields.io/badge/Java-21-orange)](https://openjdk.org/)
[![PrimeFaces](https://img.shields.io/badge/PrimeFaces-14-green)](https://primefaces.org/)

## Rôle

Application web d'administration BTP : gestion de chantiers, matériel, personnel, devis, factures, planning. Consomme l'API `btpxpress-server` via REST Client.

## Stack

| Composant | Technologie |
|-----------|-------------|
| Framework | Quarkus 3.27.3 LTS |
| Java | 21 |
| UI | PrimeFaces 14 + Freya |
| Composants partagés | `lions-faces-layout:1.0.0` |
| Auth | OIDC (Keycloak — realm `btpxpress`, client `btpxpress-frontend`) |
| REST Client | MicroProfile REST Client |

## Développement local

```bash
./mvnw quarkus:dev
```

App : `http://localhost:8080`

## Déploiement (lionsctl)

Le repo Gitea est publié sous le nom **`btpxpress-frontend`** (pas `btpxpress-client`).

```bash
lionsctl pipeline \
  -u https://git.lions.dev/lionsdev/btpxpress-frontend \
  -b main -j 21 -e production -c k1 -p prod
```

**URL prod** : `https://btpxpress.lions.dev`

**Pré-requis infrastructure** (migration Helm → lionsctl) :
- `Dockerfile` racine (fast-jar, `ubi8/openjdk-21:1.21`, UID 1001)
- `.dockerignore` : `target/*` + `!target/quarkus-app/**`
- Deployment Helm existant supprimé au préalable (selector immutable)
- Service selector à repatcher après pipeline (retirer labels `app.kubernetes.io/*`)

## Documentation complémentaire

- [`CONFIGURATION.md`](CONFIGURATION.md) — Configuration générale
- [`CONFIGURATION_KEYCLOAK_JSF.md`](CONFIGURATION_KEYCLOAK_JSF.md) — Intégration Keycloak/JSF
- [`CORRECTIONS_OIDC.md`](CORRECTIONS_OIDC.md) — Fixes OIDC notables
- [`AUDIT_CONFIGURATION.md`](AUDIT_CONFIGURATION.md) — Configuration audit
- [`CORRECTIONS_MENU_SOUS_MENUS.md`](CORRECTIONS_MENU_SOUS_MENUS.md) — Notes navigation

## Licence

Propriétaire — Lions Dev © 2026
