114 lines
4.8 KiB
Markdown
114 lines
4.8 KiB
Markdown
# mic-after-work-server-impl-quarkus-main
|
||
|
||
This project uses Quarkus, the Supersonic Subatomic Java Framework.
|
||
|
||
If you want to learn more about Quarkus, please visit its website: <https://quarkus.io/>.
|
||
|
||
## 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.jar.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/mic-after-work-server-impl-quarkus-main-1.0.0-SNAPSHOT-runner`
|
||
|
||
If you want to learn more about building native executables, please consult <https://quarkus.io/guides/maven-tooling>.
|
||
|
||
## Fonctionnalités métier (AfterWork)
|
||
|
||
### Notifications
|
||
|
||
- **Service** : `NotificationService` — création, lecture, pagination, marquage lu/suppression des notifications en base.
|
||
- **Déclencheurs** : Notifications créées automatiquement pour les demandes d’amitié (destinataire), les likes/commentaires sur les posts (auteur du post), les nouvelles notes d’établissement (manager).
|
||
- **API** : `GET/POST /notifications/user/{userId}`, pagination, marquer lu, supprimer. Voir [SECURITY.md](SECURITY.md) pour l’usage en production (userId issu de l’auth).
|
||
|
||
### Jobs planifiés (Quarkus Scheduler)
|
||
|
||
- **Stories** : Désactivation des stories expirées (cron : toutes les heures).
|
||
- **Tokens** : Suppression des tokens de réinitialisation de mot de passe expirés (tous les jours à 3h).
|
||
- **Abonnements** : Expiration des abonnements établissements et désactivation des établissements non payés (toutes les heures).
|
||
- **Rappels événements** : Notifications en base pour les participants (J-1 et H-1), exécution toutes les 15 minutes.
|
||
- **Avertissement abonnement** : Envoi d’emails J-3 avant expiration aux managers (tous les jours à 9h).
|
||
|
||
Configuration : `quarkus.scheduler.enabled=true` (désactivé en test via `%test.quarkus.scheduler.enabled=false`).
|
||
|
||
### Emails transactionnels
|
||
|
||
- **EmailService** : Réinitialisation mot de passe, bienvenue, confirmation de paiement Wave, rappel événement, avertissement expiration abonnement, confirmation de réservation, échec de paiement Wave.
|
||
- Configuration SMTP via variables d’environnement (`MAILER_HOST`, `MAILER_USERNAME`, `MAILER_PASSWORD`, etc.) ; en test le mailer peut être en mode mock.
|
||
|
||
### Paiement Wave (établissements)
|
||
|
||
- Initiation de paiement (abonnement mensuel/annuel), webhook `POST /webhooks/wave` pour `payment.completed`, `payment.refunded`, `payment.failed`, etc.
|
||
- Vérification optionnelle de la signature du webhook (header `X-Wave-Signature`, HMAC-SHA256) si `wave.webhook.secret` est configuré. Voir [SECURITY.md](SECURITY.md).
|
||
|
||
---
|
||
|
||
## Related Guides
|
||
|
||
- Hibernate ORM ([guide](https://quarkus.io/guides/hibernate-orm)): Define your persistent model with Hibernate ORM and Jakarta Persistence
|
||
- SmallRye OpenAPI ([guide](https://quarkus.io/guides/openapi-swaggerui)): Document your REST APIs with OpenAPI - comes with Swagger UI
|
||
- RESTEasy Classic ([guide](https://quarkus.io/guides/resteasy)): REST endpoint framework implementing Jakarta REST and more
|
||
- Logging JSON ([guide](https://quarkus.io/guides/logging#json-logging)): Add JSON formatter for console logging
|
||
- JDBC Driver - PostgreSQL ([guide](https://quarkus.io/guides/datasource)): Connect to the PostgreSQL database via JDBC
|
||
|
||
## Sécurité et déploiement
|
||
|
||
- **Sécurité** : Voir [SECURITY.md](SECURITY.md) (auth, webhook Wave, secrets, validation).
|
||
- **Docker** : Voir [docker/README.md](docker/README.md) pour lancer l’app et les dépendances (PostgreSQL, etc.).
|
||
|
||
## Provided Code
|
||
|
||
### Hibernate ORM
|
||
|
||
Create your first JPA entity
|
||
|
||
[Related guide section...](https://quarkus.io/guides/hibernate-orm)
|
||
|
||
|
||
|
||
### RESTEasy JAX-RS
|
||
|
||
Easily start your RESTful Web Services
|
||
|
||
[Related guide section...](https://quarkus.io/guides/getting-started#the-jax-rs-resources)
|