Skip to content

BenjaminCIR/Advanced-Matchmaking

Repository files navigation

Advanced Matchmaking App - TeamBuilding

Description

TeamBuilding est une application web conçue pour aider les entreprises à former facilement des équipes de projet correspondant à des exigences spécifiées. Elle inclut un système de "matchmaking" conçu pour faciliter l'appariement optimal entre les utilisateurs et les projets en maximisant la compatibilité et la satisfaction. Notre idée est de développer un algorithme qui prend en compte les compétences, les préférences et la disponibilité des utilisateurs, ainsi que les besoins spécifiques de chaque projet. Ce système aidera non seulement à former des équipes équilibrées et performantes, mais assurera également une expérience enrichissante pour les participants et une plus grande efficacité pour les projets.

Fonctionnalités

Fonctionnalités Manager

  • Voir tous les projets (en cours, passés, à venir).
  • Attribuer des équipes aux projets qui n'en ont pas encore.
  • Remplir une enquête de satisfaction pour les projets passés (à des fins de démonstration).
  • Créer de nouveaux projets.
  • Voir la liste des employés.
  • Modifier le profil personnel :
    • Changer le mot de passe.
    • Mettre à jour les compétences.
    • Définir la mobilité (sur site ou à distance).
    • Définir la disponibilité.

Fonctionnalités Employé

  • Voir uniquement les projets dans lesquels ils sont impliqués (en cours, passés, à venir).
  • Modifier le profil personnel (mêmes champs que les managers).
  • Remplir des enquêtes de satisfaction pour les projets terminés.

Architecture et Déploiement Azure (Production)

Vue d'ensemble de l'Architecture

L'application est déployée sur Azure App Service pour Conteneurs (Linux), garantissant une connexion sécurisée à la base de données via un Réseau Virtuel (VNet) privé.

  • IaC (Infrastructure as Code) : L'infrastructure est gérée via Terraform.
  • Conteneurisation : L'application web Python/Django est conteneurisée (image django-web:v1) et stockée dans un Azure Container Registry (ACR).
  • Base de Données : Azure Database for MySQL Flexible Server est déployé avec une connexion privée, garantissant que le trafic de la base de données ne quitte jamais le Réseau Virtuel.
  • Réseau : L'App Service est intégré au VNet pour accéder en privé à la base de données MySQL.
  • Sécurité des Secrets : Le mot de passe de l'administrateur de la base de données est stocké dans un Azure Key Vault (KV). L'App Service utilise son identité gérée (System Assigned Identity) pour accéder au secret et à l'ACR (rôle AcrPull).

Prérequis

Avant de commencer le déploiement, assurez-vous que les outils suivants sont installés et configurés :

  • Docker
  • Azure CLI (authentifié avec az login)
  • Terraform

Procédure de Déploiement sur Azure

1. Déploiement de l'Infrastructure avec Terraform

a. Initialisation : Naviguez vers le répertoire "terraform" et initialisez Terraform.

terraform init

b. Planification et Application : Exécutez le plan pour visualiser les ressources, puis appliquez la configuration.

terraform plan
terraform apply

(Vous devrez fournir les valeurs des variables, notamment db_admin_password).

2. Préparation du Code et de l'Image

Construction et Push de l'Image Docker : Nous construisons l'image de l'application et la publions dans l'ACR.

Commencez par effectuer cette commande afin de récupérer les variables nécessaires pour l'ACR :

$ACR_LOGIN_SERVER = (terraform output -raw acr_login_server).Trim()

Authentifiez-vous auprès de l'ACR :

az acr login --name $ACR_LOGIN_SERVER

Construisez l'image : (Assurez-vous d'être dans le répertoire racine du projet)

docker build -t "$ACR_LOGIN_SERVER/django-web:v1" .

Poussez l'image vers l'ACR :

docker push "$ACR_LOGIN_SERVER/django-web:v1"

Déplacez vous dans le répertoire de l'initialisation de la base de données

cd db-init

Construisez puis poussez l'image de la base de données :

docker build -t "$ACR_LOGIN_SERVER/db-init:latest" .
docker push "$ACR_LOGIN_SERVER/django-web:v1"

3. Finir le déploiement de l'Infrastructure avec Terraform

Dans le main.tf, décommentez toute la deuxième partie du fichier avant d'effectuer une seconde fois la commande suivante :

terraform apply

4. Accès à l'Application

Une fois le déploiement réussi, l'application est accessible via l'URL de votre App Service. Vous trouverez cette URL sur le portail Azure. Normalement il devrait s'agir de ce lien : https://advancedmatchmaking-app.azurewebsites.net/matchmakingApp/ Le lancement de l'application peut prendre quelques minutes.

Utilisateurs de Test (Post-Déploiement)

Après le déploiement et l'initialisation de la base de données par l'application, vous pouvez utiliser les comptes suivants pour tester les différentes vues et fonctionnalités de notre application (la base de donnée d'initialisation déployée sur le repository git est une BDD d'exemple afin de tester l'application) :

Rôle Adresse Email Mot de Passe
Manager doe.john@example.com johnXD42!
Employé bon.jean@example.com jeanXD42!
Admin messi.cristiano@example.com admin

Les fonctionnalités les plus intéressantes à tester sont celles du rôle Manager, car elles impliquent la création de projets, la gestion des équipes et l'utilisation potentielle de l'algorithme de "matchmaking" central de l'application.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors