# 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: . ## 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 . ## 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 . ## 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)