Contributions open-source au projet JHipster: Difference between revisions

From air
Jump to navigation Jump to search
No edit summary
No edit summary
 
(80 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Encadrant : Didier Donsez.
Encadrant : Didier Donsez.


En 2020 et 2021, plusieurs extensions à JHipster ont été réalisées des INFO 5A (voir https://github.com/contribution-jhipster-uga).
Ce projet propose de développer plusieurs contributions au projet open-source [[JHipster]]


A savoir:
Liste non exhaustive et non priorisée des extensions (au générateur et à JDL) à développer et à contribuer
* Intégration de [https://fullcalendar.io/ FullCalendar] (voir l'application [https://www.motorsports-database.racing/#/ Motorsport Database] et [https://github.com/sudheerj/generator-jhipster-primeng/search?q=fullcalendar&unscoped_q=fullcalendar l'intégration dans PrimeNG])
* Bug fixes à puisser dans https://github.com/jhipster/generator-jhipster/issues
* Intégration de iCal4J au générateur [https://fullcalendar.io/ FullCalendar]
* Clé primaire applicative (par défaut, le générateur d'entité génère un champ Id qui est la clé primaire)
** https://github.com/ical4j/ical4j
* intégration de nouveaux types de données et des composants Angular 4 idoines
** https://github.com/ical4j/ical4j/wiki/Examples
** geoloc, altitude
* Ajout de l'indexation full-text dans les types Blob avec [[Apache Tika]] en fonction de leur content-type
** Séries temporelles [[TSBD]]
* Optimisation des transferts d'images de type ImageBlob (caching client, etag, vignette)
** Graphes (http://projects.spring.io/spring-data-neo4j/)
* Ajout de l'indexation full-text par [[OCR]] dans les types ImageBlob avec [[Tesseract]] OCR (voir [https://linuxhint.com/tess4j_maven_java_tutorial/ Tess4J])
** Images (stockage File System, stockage BLOB du backend BD, stockage CDN, ...).
* Ajout de la détection d'objets dans les types ImageBlob avec [[ImageAI]]
** ...
* Intégration de charts ([https://swimlane.github.io/ngx-charts/#/ngx-charts ngx-charts]) dans les entités (coté frontend et coté backend entry point /api/entity_name/chart)
* Intégration [[HarperDB]] https://harperdb.io/
* Intégration Mantine https://github.com/mantinedev/mantine
* Intégration ReactFlow https://reactflow.dev

Ce projet propose de maintenir ces extensions à JHispter, de les porter pour les autres canevas client (React, Vue) et développer de nouvelles extensions qui seront contribées au projet open-source [[JHipster]].

Ce projet vous permettra de rentrer dans le coeur des technologies (frontend, backend) et de ne pas rester qu'un simple utilisateur de celles-ci.

Dépôt Github : https://github.com/contribution-jhipster-uga


=Quelques idées d'extension=
* [[Conteneurs pour le Pentest]]
* Intégration de Discord4J dans le backend Spring https://www.baeldung.com/spring-discord4j-bot
* Amélioration du générateur de chatbot Rasa.io (en relation avec l'indexation full text)
* Intégration d'un "tour" : candidats [https://github.com/tnicola/ngx-joyride|NGX JOYRIDE], [https://isaacplmann.github.io/ngx-tour/|NGX TOUR], ...
* Générateur d'un frontend Flutter (https://flutter.dev). (Authentification JWT, Authentification OAuth2.0, Entité (liste, détail, création, modification), ...
* Ajout d'un composant pour la mise à jour d'une entité avec Ngx Formly au générateur [https://github.com/raymonschouwenaar/angular-ngx-formly-material-example voir l'exemple] [https://medium.com/better-programming/build-fast-json-powered-forms-on-angular-with-ngx-formly-b7a00733e66e voir l'exemple]
* Ajout du SEO (JSON-LD) [https://samvloeberghs.be/posts/outputting-json-ld-with-angular-universal voir] et [https://coryrylan.com/blog/angular-seo-with-schema-and-json-ld voir]
* Composant de SignaturePad pour les champs de type ImageBlob :
** voir http://lathonez.com/angular2-signaturepad-demo/
** voir https://dimpu.github.io/angular2-signature-pad/
* Composant de dessin pour les champs de type ImageBlob (ajout d'un bouton "Draw")
* Composant de retouche d'images pour les champs de type ImageBlob (ajout d'un bouton "Edit").
* Ajout d'un composant d'édition Rich Text (comme TinyMCE ou http://textangular.com/) pour l'édition et l'affichage de TextBlob d'une entité.

* Terminaison du [https://github.com/contribution-jhipster-uga/generator-jhipster/tree/angular-material générateur Angular Material]
* Bloquage des authentifications répétées en échec (brute force) avec un container [[Fail2ban]]. ([https://www.google.fr/search?client=firefox-b&dcr=0q=fail2ban+spring|lien]
* Amélioration du plugin Leaflet avec Leaflet Draw http://leaflet.github.io/Leaflet.draw/docs/leaflet-draw-latest.html
* Amélioration du générateur de chatbot Rasa.io (en relation avec l'indexation full text)
* Intégration d'un module Discord.
* Intégration de Postman pour les tests des endpoints de l'API

* Clear-Site-Data Header pour le logout (https://www.baeldung.com/spring-security-clear-site-data-header)
* Intégration de Spring Data [[Apache Ignite]] (voir https://www.baeldung.com/apache-ignite-spring-data)
* Démonstration d'un Q/A live en mode Chat (voir pubble.io) avec les websockets.

* Démonstrateur Téléconsultation avec JHipster, Jitsi et WebRTC : l'objectif est de développer une plateforme open-source de téléconsultation (médecin, mécanicien, plombier, coiffeur, soutien scolaire, tutorat polytech “confiné” ...) avec prise de rendez-vous. La plateforme sera basée sur JHipster, FullCalendar, Stripe, Paypal et Jitsi (WebRTC https://jitsi.org/ ). Les frontends mobiles pourront être développés avec Flutter (https://flutter.dev ). Le backend pourra être déployé avec Kubernetes sur un CaaS public (demande de crédits Azure en cours). Cette plateforme pourra être ajoutée au showroom de JHipster et l’objet d’une présentation à la conf JHipster
* Ajout de [[Weavescope]]
* Ajout des types enums dans Liquibase
* Renforcement du typage des enums SQL (avec liquibase) [https://stackoverflow.com/questions/5133423/enum-data-type-for-liquibase voir]
* Intégration du protocole pub-sub [[MQTT]] (avec/sans TLS). Ajout du docker-compose file pour [[Mosquitto]] ou [[RabbitMQ]]
** Exemple: https://github.com/CampusIoT/campusiot-app/blob/47c9e860c6e807372f4a3914d9eb5d0340ee28b9/src/main/java/fr/imag/campusiot/app/service/impl/MqttSinkImpl.java
* Intégration du protocole pub-sub [[AMQP]].
* Intégration d'un "tour" : candidats [https://github.com/tnicola/ngx-joyride|NGX JOYRIDE], [https://isaacplmann.github.io/ngx-tour/|NGX TOUR], ...
* Bloquage des authentifications répétées en échec (brute force) avec un container [[Fail2ban]]. ([https://www.google.fr/search?client=firefox-b&dcr=0q=fail2ban+spring|lien]
* Banissement des adresses IP au moyen de [https://freegeoip.net FreeGeoIP] ([https://hub.docker.com/r/fiorix/freegeoip/~/dockerfile/|Dockerfile])
* Générateur d'un backend ou d'un microservice en [[Elixir]] (utilisation de [https://github.com/everydayhero/phoenix_swagger Phoenix Swagger]) pour l'API.
* Génération des quatre composants d'entités avec FuelUI http://fuelinteractive.github.io/fuel-ui/
* Ajout de [[Knative]] à l'extension [[Kubernetes]]
* Ajout d'[[Istio]]
* Ajout d'une [Non Blocking State Machine|https://dzone.com/articles/drafta-non-blocking-state-machine] sur une entité possédant un champs Enum (correspondant à l'état de la machine : pensez à ajouter des dates pour chaque changement d'état).
* Intégration de React Admin https://github.com/marmelab/react-admin
* Ajout [https://dzone.com/articles/chaos-monkey-for-spring-boot-microservices|Chaos Monkey for Spring Boot Microservices]


* Génération de classes pour [https://projects.spring.io/spring-shell/ commandes shell] pour inspecter/modifier les entités (générées).
* Intégration authentification [https://www.apereo.org/projects/cas CAS]
* Ajout d'un ClusteredFileStorage pour les stockage des images côté backend.
* Synchronisation du FileStorage avec des Drives cloud (OwnCloud, Google Drive, Dropbox, OneDrive, ...)
* Traduction automatique des messages i18n ?
* Traduction automatique des valeurs des champs texte des entités
* Ajout de nouveaux backends BD
* Ajout de nouveaux backends BD
** [[OpenTSDB]], [[InfluxDB]]
** [[OpenTSDB]], [[InfluxDB]]
* Intégration Push API ([https://medium.freecodecamp.org/a-guide-to-getting-the-most-out-of-the-push-api-72a139bfeb44 lien])
** [[DBaaS]] (InfluxData, OVH Metrics) ...
* Amélioration du client [[Swagger]] UI ([[OpenAPI]]2.0 et [[OpenAPI]]3.0)
** Graphes (http://projects.spring.io/spring-data-neo4j/)
* Composants d'UI pour les champs : badges pour les types boolean et enum, toogle-slide pour les checkboxs, angular-material, [[Leaflet]], charts (statiques, temps réel) ...)
* readonly fields
* final fields : (certains champs ne doivent plus être modifiables après l'instanciation du bean).
* field visibility (public, group, private) : (certains champs doivent être visibles soit de tous les utilisateurs, soit de tous les utilisateurs authentifiés, des utilisateurs appartenant à un groupe ou bien seulement de l'utilisateur (ie créateur).
* Ajout des champs createdBy, lastModifiedBy, createrAt, lastModifiedAt (voir l'entité User) à une entité générée.
* QueryService
* userId fields
* extra user-profile
** Adresses
** Réseaux sociaux
** Sports
** Forme (ie pour le sport)
** ...
* amélioration du volet [[Swagger]] ([[OpenAPI]]2.0 et [[OpenAPI]]3.0)
** Annotations supplémentaires
* Multi-thèmes Dashboard
* Multi-thèmes Dashboard
** SBAdmin 2
** SBAdmin 2
** Gentella
** Gentella
** Ngx-Admin ([https://github.com/akveo/ngx-admin/blob/master/README.md lien]), Nebulla ([https://akveo.github.io/nebular/#/docs/installation/add-into-existing-project lien])
** Ngx-Admin ([https://github.com/akveo/ngx-admin/blob/master/README.md lien]), Nebulla ([https://akveo.github.io/nebular/#/docs/installation/add-into-existing-project lien])
* Gestion de [[Content Delivery Network]] type AWS S3.
* Intégration d'un backend [[CMS]].
* Intégration du protocole pub-sub [[MQTT]]. Ajout du docker-compose file pour [[Mosquitto]] ou [[RabbitMQ]]
* Gestion de [[Content Delivery Network]].
* Intégration du protocole pub-sub [[MQTT]].
* Intégration du protocole pub-sub [[AMQP]].
* Intégration du protocole pub-sub [[AMQP]].
* gestionnaire centralisé des Users et de leurs profiles (pour plusieurs microservices)
* gestion du RateLimit (IP origin, GeoIPing, per user) par type d'opération (GET, PUT, POST, DELETE).
** [[Resilience4j]]
* Génération du Dockerfile pour les instances de container pour [[HAProxy]] (gestion de SSL-Termination, DDoS, ...).
* Génération du Dockerfile pour les instances de container pour [[Nginx]].
* Gestion de quota sur les créations d'entité.
* Gestion de quota sur les créations d'entité.
* Intégration de [[VT2016 Chatbots|chatbot]]s
* Intégration de [[Chatbot|chatbot]]s open-source ([[Rasa.ai]] par exemple) ou commerciaux.
* Intégration de la traduction automatique des messages et des contenus des champs texte
* Intégration de la traduction automatique des messages et des contenus des champs texte
* Ajout de l'import en bulk d'un entity (voir Spring Batch) par upload de fichiers CSV/XLS (génération du backend et du frontend).
* Ajout de l'import en bulk d'un entity (voir Spring Batch) par upload de fichiers CSV/XLS (génération du backend et du frontend).
* Ajout d'un container [[Vitess]] à JHipster (JPARepository)
* Ajout de Captcha à la création de compte, au login, ... ([[ReCaptcha]], ...)
* Ajout d'un container [[Memcached]] à JHipster
* ...
* Ajout d'autres réseaux sociaux (Linkedin, Github, ...)
* Ajout de composants de paiement (Paypal, Cartes de crédit, ...)
* Ajout de [[Telegraf]], [[Hawkular]] aux dockerfiles générés des containers.
** Voir http://www.hawkular.org/blog/2017/06/9/opentracing-spring-boot.html
* Ajout d'un dockerfile pour [[Grafana]] configuré avec un dashboard taillé pour JHipster et les entités générées.
* Intégration de [[Mockito]]
* Intégration Websocket ([https://dzone.com/articles/spring-boot-server-sent-events-tutorial lien])
* Génération des fonctions pour un backend [[OpenWhisk]] ([https://hub.docker.com/u/openwhisk/ containers Docker]) ou pour [https://www.ibm.com/cloud-computing/bluemix/fr/openwhisk IBM Bluemix OpenWhisk].
* Génération du backend pour [[Play]] : voir le code généré par Swagger Codegen pour [[Play]] et https://github.com/peterszatmary/learning-play-framework/wiki/Mysql,-JPA-and-Play!. , https://github.com/playframework/play-java-rest-api-example
* Intégration (sécurisée) de l'API Health Check http://microservices.io/patterns/observability/health-check-api.html
* Ajout de HATEOS ([https://dzone.com/articles/creating-a-rest-api-with-java-and-spring exemple])
* Ajout de [[Apache Phoenix]] à JHipster ([https://phoenix.apache.org/phoenix_orm.html JPARepository for Phoenix])
* Ajout de [[Vitess]] à JHipster (JPARepository)
* Ajout de [[Memcached]] à JHipster
* Bloquage des authentifications répétées en échec (brute force) avec [[Fail2ban]]. ([https://www.google.fr/search?client=firefox-b&dcr=0q=fail2ban+spring lien]
* Banissement des adresses IP au moyen de [https://freegeoip.net FreeGeoIP] ([https://hub.docker.com/r/fiorix/freegeoip/~/dockerfile/ Dockerfile])
* Intégration de [[ElastAlert]]
* Intégration de [[Intel Clear Containers]]
* Intégration de [[Intel Clear Containers]]
* Ajouter une confirmation textuelle pour la suppression d'une entité (exemple, le nom de l'entité, une phrase type, ...).
* Intégration de Tags "user-defined" sur des entités (ajout/retrait/recherche par groupe de tags, liste de tags par défaut).
** Remarque: il faut conserver de forcer la destruction en utilisation ligne de commandes ("force"=true)
* Intégration des [https://api.slack.com/web API Slack]. Faire une petite démo.
* Authentification FIDO (https://github.com/Mastercard/fido2-rp-spring)
* Descripteurs docker-compose et k8s pour les distributions clusterisées de:
** Kafka
** RabbitMQ
** MySQL https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/
** Postgres
** MongoDB
** Cassandra
* Keycloak theming ([https://medium.com/@auscunningham/create-a-custom-theme-for-keycloak-8781207be604 voir])




Des applications de démo simple seront proposées en exemple pour chaque extension.
Une application de démo sera proposée en exemple. Par exemple, un gestionnaire de course sportive (voir groupe [[UltraTeam]]).

Latest revision as of 08:32, 13 September 2023

Encadrant : Didier Donsez.

En 2020 et 2021, plusieurs extensions à JHipster ont été réalisées des INFO 5A (voir https://github.com/contribution-jhipster-uga).

A savoir:

Ce projet propose de maintenir ces extensions à JHispter, de les porter pour les autres canevas client (React, Vue) et développer de nouvelles extensions qui seront contribées au projet open-source JHipster.

Ce projet vous permettra de rentrer dans le coeur des technologies (frontend, backend) et de ne pas rester qu'un simple utilisateur de celles-ci.

Dépôt Github : https://github.com/contribution-jhipster-uga


Quelques idées d'extension


  • Génération de classes pour commandes shell pour inspecter/modifier les entités (générées).
  • Intégration authentification CAS
  • Ajout d'un ClusteredFileStorage pour les stockage des images côté backend.
  • Synchronisation du FileStorage avec des Drives cloud (OwnCloud, Google Drive, Dropbox, OneDrive, ...)
  • Traduction automatique des messages i18n ?
  • Traduction automatique des valeurs des champs texte des entités
  • Ajout de nouveaux backends BD
  • Intégration Push API (lien)
  • Amélioration du client Swagger UI (OpenAPI2.0 et OpenAPI3.0)
  • Multi-thèmes Dashboard
    • SBAdmin 2
    • Gentella
    • Ngx-Admin (lien), Nebulla (lien)
  • Gestion de Content Delivery Network type AWS S3.
  • Intégration du protocole pub-sub MQTT. Ajout du docker-compose file pour Mosquitto ou RabbitMQ
  • Intégration du protocole pub-sub AMQP.
  • Gestion de quota sur les créations d'entité.
  • Intégration de chatbots open-source (Rasa.ai par exemple) ou commerciaux.
  • Intégration de la traduction automatique des messages et des contenus des champs texte
  • Ajout de l'import en bulk d'un entity (voir Spring Batch) par upload de fichiers CSV/XLS (génération du backend et du frontend).
  • Ajout d'un container Vitess à JHipster (JPARepository)
  • Ajout d'un container Memcached à JHipster
  • Intégration de Intel Clear Containers
  • Ajouter une confirmation textuelle pour la suppression d'une entité (exemple, le nom de l'entité, une phrase type, ...).
    • Remarque: il faut conserver de forcer la destruction en utilisation ligne de commandes ("force"=true)
  • Authentification FIDO (https://github.com/Mastercard/fido2-rp-spring)
  • Descripteurs docker-compose et k8s pour les distributions clusterisées de:
  • Keycloak theming (voir)


Des applications de démo simple seront proposées en exemple pour chaque extension.