Ce projet est une API qui permet aux utilisateurs de gérer des tâches et de collaborer avec les membres de l'équipe. Il offre des fonctionnalités telles que la création, la modification, la suppression de tâches et l'authentification des utilisateurs.
- Node.js
- Express
- Sequelize
- MariaDB
- Docker
- Kubernetes
- Jest
- Supertest
- Postman
- SonarQube
- Jira
POST /auth
- Créer ou Authentifier un utilisateurPOST /tasks
- Créer une nouvelle tâcheGET /users
- Afficher tous les utilisateursGET /tasks
- Afficher toutes les tâchesPUT /task/:id
- Mettre à jour une tâcheDELETE /task/:id
- Supprimer une tâche
Ce projet inclut plusieurs types de tests pour garantir la qualité et la sécurité du code.
- Prévention des injections SQL : Vérifie que l'application est protégée contre les attaques par injection SQL.
- Prévention des attaques XSS : Vérifie que l'application est protégée contre les attaques par script intersite (XSS).
- Hachage des mots de passe : Vérifie que les mots de passe des utilisateurs sont correctement hachés avant d'être stockés.
- Protection contre les attaques par force brute : Limite le nombre de tentatives de connexion pour prévenir les attaques par force brute.
- Création d'utilisateur : Vérifie que les utilisateurs peuvent être créés avec des informations valides.
- Connexion d'utilisateur : Vérifie que les utilisateurs peuvent se connecter avec des informations valides.
- Création de tâche : Vérifie que les tâches peuvent être créées avec des informations valides.
- Modification de tâche : Vérifie que les tâches peuvent être modifiées avec des informations valides.
- Suppression de tâche : Vérifie que les tâches peuvent être supprimées avec des informations valides.
- Endpoints API : Vérifie que les endpoints de l'API fonctionnent correctement et retournent les réponses attendues.
- Base de données : Vérifie que les opérations de base de données (création, lecture, mise à jour, suppression) fonctionnent correctement.
Pour utiliser ce projet avec Docker :
docker-compose up --build
Ce projet utilise un pipeline CI/CD pour automatiser les processus de développement, de test et de déploiement.
Le pipeline CI/CD est défini dans le fichier .github/workflows/ci.yaml
. Il comprend les étapes suivantes :
- Build et Test :
- Vérifie le code source et installe les dépendances.
- Exécute les tests pour s'assurer que le code fonctionne correctement.
- Build Docker :
- Construit l'image Docker de l'application.
- Pousse l'image Docker vers Docker Hub.
- Analyse SonarQube :
- Exécute une analyse de code avec SonarQube pour vérifier la qualité du code.
Le projet utilise Kubernetes pour le déploiement et la gestion des conteneurs. Les fichiers de configuration Kubernetes se trouvent dans le répertoire k8s/. Ils définissent les ressources suivantes :
- Déploiements : Gère le déploiement des applications et des bases de données.
- Services : Expose les applications et les bases de données pour permettre la communication entre elles.
- Secrets : Stocke les informations sensibles telles que les mots de passe de la base de données.
Ce projet intègre également la gestion de tickets Jira, à l'aide de ces endpoints :
POST /ticket
- Créer un ticketGET /ticket/:id
- Récupérer un ticketPUT /ticket/:id
- Modifier un ticket