{"id":25448047,"url":"https://github.com/swyth-dev/realtime-emergency-response-system","last_synced_at":"2026-05-08T13:20:09.019Z","repository":{"id":276785314,"uuid":"930287357","full_name":"swyth-dev/realtime-emergency-response-system","owner":"swyth-dev","description":"MedHead Enterprise Real-Time Emergency Response System Proof of Concept. Event-Driven Architecture \u0026 Microservices with Angular \u0026 Spring.","archived":false,"fork":false,"pushed_at":"2025-04-11T12:40:34.000Z","size":664,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-02T07:39:10.662Z","etag":null,"topics":["angular","event-driven","medhead","microservices","monorepo","proof-of-concept","spring"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/swyth-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-10T11:45:39.000Z","updated_at":"2025-04-11T12:17:08.000Z","dependencies_parsed_at":"2025-03-31T11:24:02.995Z","dependency_job_id":"0aa273f8-109c-414d-ac60-f2c16cadb59e","html_url":"https://github.com/swyth-dev/realtime-emergency-response-system","commit_stats":null,"previous_names":["swyth-dev/realtime-emergency-response-system"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/swyth-dev/realtime-emergency-response-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swyth-dev%2Frealtime-emergency-response-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swyth-dev%2Frealtime-emergency-response-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swyth-dev%2Frealtime-emergency-response-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swyth-dev%2Frealtime-emergency-response-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/swyth-dev","download_url":"https://codeload.github.com/swyth-dev/realtime-emergency-response-system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swyth-dev%2Frealtime-emergency-response-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32782001,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","event-driven","medhead","microservices","monorepo","proof-of-concept","spring"],"created_at":"2025-02-17T19:18:39.127Z","updated_at":"2026-05-08T13:20:08.997Z","avatar_url":"https://github.com/swyth-dev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Système de Réponse d'Urgence en Temps Réel - MedHead Enterprise (Proof of Concept)\n\n\u003e Ce dépôt GitHub contient une preuve de concept basée sur une architecture orientée événements et microservices, dans le cadre de la mise en place d’un système de réponse d’urgence en temps réel pour le consortium MedHead.  \n\u003e\n\u003e Un consortium composé de quatre entreprises leaders s’est formé pour mutualiser leurs efforts, données, applications et feuilles de route, afin de développer une plateforme de nouvelle génération, centrée sur le patient. Celle-ci vise à améliorer les soins de base tout en étant réactive, opérationnelle en temps réel et capable de prendre des décisions critiques en situation d’urgence, en tenant compte de toutes les données disponibles.\n\n## Diagramme d'architecture\n\n![Diagrame d'architecture logicielle de la PoC](./doc/diagrams/Medhead_Architecture.png)\n\n\u003e Note : Dans le cadre des développements, une seule base de données est démarrée, avec des schémas différents initalisé par chaque microservice.\n\n## 📁 Structure du projet\n\nLe dépôt est organisé de la manière suivante :\n\n```bash\n├── .github/workflows/                # Fichiers de configuration CI/CD (GitHub Actions)\n├── backend/                          # Code source backend (services, domaine, API, etc.)\n├── doc/                              # Documentation du projet\n├── frontend/realtime-emergency-app/ # Application frontend (React, Angular, etc.)\n├── jmeter/                           # Scénarios de test de performance JMeter\n├── .gitignore                        # Fichiers à ignorer par Git\n├── LICENSE                           # Licence du projet\n├── README.md                         # Fichier de documentation principal\n├── compose.yml                       # Configuration Docker Compose pour les microservices\n```\n\n## ⚙️ Configuration de votre environnement local\n\n### Prérequis\n\nAfin de démarrer vos développements, vous devez avoir :\n- **Java 21**\n- **Maven** \n- **Node 20** et **Angular CLI**\n- **Docker Desktop** et **Docker compose** d'intallé\n- Un **IDE** (Intellij, VsCode) : nous recommandons IntelliJ.\n- Optionnel :\n   - Apache JMeter. Reportez vous à [la documentation en lien](./jmeter/README.md).\n   - Un client d'API ([Bruno](https://www.usebruno.com/), [Postman](https://www.postman.com/), [Insomnia](https://insomnia.rest/download)). Les collections Bruno et Postman sont disponibles [ici](./docs).\n\nClonez ce projet sur votre machine.\n\n### 📦 Démarrer les composants liés aux microservices\n\nPour stocker les données de manière persistante et permettre à l’application de démarrer correctement, ainsi qu'assurer la communication des évènements, vous devez démarrer certains composants :\n- **PostgreSQL** : Système de gestion de base de donnée relationelle. Pour cette PoC, une seule DB est démarrée, et chaque microservice utilise son propre schéma. En production, chaque micro service utilise sa propre instance de DB\n- **Kafka** : Plateforme de messagerie distribuée qui permet aux services de communiquer en temps réel via des événements.\n- **Kafka UI** : Interface web pour superviser les brokers Kafka, et notamment les événements liés à la réservation de lit.\n\n1. [**Installez Docker Desktop**](https://docs.docker.com/desktop/) sur votre machine.\n2. (**Optionnel**) Effacez les volumes locaux de persistance :\n   - `rm -rf db_data:/var/lib/postgresql/data` pour les données relationelles.\n   - `rm -rf kafka_data:/var/lib/kafka/data` pour les données d'évènements.\n4. Exécutez la commande `docker compose up` depuis la racine du projet pour démarrer les composants :\n\n\u003e 💡 Les microservices ayant besoin d'une base de données relationelle ne démarreront pas si la base de bonnée n'est pas préalablement démarrée.\n\n### Démarrer les microservices\n\nPour démarrer les microservices de manière pratique : \n1. Ouvrez le dossier `backend` dans votre IDE IntelliJ\n2. Depuis la fenêtre **Services**, lancez 1 à 1 vos microservices en respectant l'odre de démarrage :\n   1. Discovery Service\n   2. Hospital \u0026 Emergency Service (peu importe le sens)\n   3. Gateway Service\n\n\u003e Note : De cette manière, les services vont s'enregistrer aurpès du Discovery Server et l'API Gateway saura router correctement les requêtes entrantes\n\n### Démarrer l'application frontend Anuglar\n\nPour démarrer l'application Angular, placez vous dans le dossier d'application, installez les packages et lancez l'application : \n\n```bash\ncd ./frontend/realtime-emergency-app/\nnpm i\nng serve \n```\n\n## 🧱 Gestion des migrations de données avec Liquibase\nNous utilisons [**Liquibase**](https://www.liquibase.com/) pour versionner les changements de structure, gérer les migrations de données, et peupler la base avec des données de test.\n\n\u003e 💡 Nous utilisons le plugin [IntelliJ JPA Buddy](https://plugins.jetbrains.com/plugin/15075-jpa-buddy) pour générer les changelogs à partir des entités JPA, évitant ainsi les scripts SQL manuels.\n\u003e Toutes les modifications proviennent directement des entités de chaque domaine.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswyth-dev%2Frealtime-emergency-response-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswyth-dev%2Frealtime-emergency-response-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswyth-dev%2Frealtime-emergency-response-system/lists"}