(S15) Mission 5: Développer l'API côté serveur et connecter l'application client avec l'API
Votre mission
Pour cette troisième mission, valant pour 40% de la note finale, vous devrez programmer à l'aide de NestJS une API compatible avec votre application Angular, réajuster votre application Angular pour qu'elle fonctionne avec votre API et finalement déployer l'application.
Ce deuxième travail sera séparé en 3 parties:
-
API (serveur de données)
- API REST NestJS supportant les fonctionnalités / CRUD de votre application client Angular
- Inscription et authentification d'utilisateurs via API et retournant un jeton JWT
- Droits d'accès sur les routes et/ou fonctionnalités pour restreindre l'accès
- Un utilisateur doit être authentifié pour accéder aux fonctionnalités exposées par l'API (sauf pour l'inscription et la connexion évidemment)
- Seul un administrateur peut effectuer les actions de création/modification/suppression pour les serveurs.
- Un utilisateur peut seulement modifier ses propres messages
- Utilisation de
WebSocket
pour la portion messages deDiscord
(chat) - Tests d'intégration automatisés de fonctionnalités (1 groupe de tests sur une lecture et 1 groupe sur une création/modification d’un élément d’un CRUD par coéquipier)
- Documentation des spécifications de l'API via le standard OpenAPI (Swagger)
-
Application client (Angular)
- Réajustement de l’application pour fonctionner avec votre API
- Gestion des droits liées aux fonctionnalités "admin" (créer/modifier/supprimer un serveur)
- Réajustement de la portion messages (
chat
) pour fonctionner à l'aide d'unWebSocket
plutôt que polling - Implémentation de l'inscription et de l'authentification via un formulaire d'inscription et un formulaire de connexion.
- Tests d'intégration e2e en lecture de composants (1 groupe par coéquipier)
- Tests d'intégration e2e sur formulaires, en création ou modification (1 groupe par coéquipier)
- Documentation
-
Déploiement
- Déployer l'application sur le service d'hébergement
Render
(https://render.com/)
- Déployer l'application sur le service d'hébergement
Modalités de remise
- S.v.p. déposer sur Léa, pour votre équipe (un coéquipier peut faire la remise pour l'équipe), un fichier
.txt
avec:- Le lien vers votre repo (si vous avez votre projet complet dans deux dossiers) ou vos repo GitLab (si vous avez un repo
client
et un reposerveur
) - Le contenu de votre fichier
.env
- L'URL de votre application déployée sur
Render.com
- Le lien vers votre repo (si vous avez votre projet complet dans deux dossiers) ou vos repo GitLab (si vous avez un repo
- Votre projet devra être remis sur un dépôt GitLab avec le tag
remise_finale
. - Inclure dans votre repo une copie de sauvegarde (export) de votre base de données:
- À partir de
pgAdmin
- Sélectionner votre BD
Clic droit
sur la BD- Choisir
Backup...
- Conserver les options par défaut (
Custom
pour le format) - Donner un nom et appuyer sur
Backup
- À partir de
- Remis avant le 12 décembre 2025 23:59.
Grille d'évaluation
Critère | Points |
---|---|
Implémentation des fonctionnalités requises et niveau de complétion de l'API | 20 |
- A (20) → Les fonctionnalités de base sont présentes, ainsi que les fonctionnalités supplémentaires (si applicable) permettant de support votre application et le tout est parfaitement fonctionnel. | |
- B (16) → Les fonctionnalités de base sont présentes, ainsi que les fonctionnalités supplémentaires (si applicable) permettant de support votre application et à peu de choses près sont fonctionnelles. | |
- C (12) → Les fonctionnalités de base sont présentes, ainsi que les fonctionnalités supplémentaires, mais sont partiellement incomplètes, partiellement non fonctionnelles ou trop simples ET/OU ne permet pas de complètement supporter votre application. | |
- D (8) → Les fonctionnalités de base ne sont pas présentes OU les fonctionnalités supplémentaires (si applicable) ne sont pas présentes OU sont jugées majoritairement insuffisantes. | |
- E(4) → Niveau de complétion insuffisant | |
Niveau de qualité de l'API | 5 |
- A (5) → L'API est complète, très bien construite et parfaitement fonctionnelle. | |
- B (4) → Dans l'ensemble l'API est complète, bien construite et fonctionnelle. | |
- C (3) → Dans l'ensemble, l'API est complète et fonctionnelle, mais présente plusieurs lacunes. | |
- D (2) → L'API est incomplète ou ne correspond pas aux attentes. | |
- E (1) → L'API ne correspond pas du tout aux attentes. | |
Droits d'accès sur les routes et/ou fonctionnalités de l'API | 5 |
- A (5) → Les routes et actions de contrôleurs sont parfaitement protégées à l'aide d'un guard ET tiennent compte de l'utilisateur connecté lorsque pertinent. | |
- B (4) → Dans l'ensemble, les routes et actions de contrôleurs sont protégées à l'aide d'un guard ET tiennent compte de l'utilisateur connecté lorsque pertinent. | |
- C (3) → Les routes et actions de contrôleurs ne sont pas tous protégées à l'aide d'un guard OU ne tiennent compte de l'utilisateur connecté lorsque pertinent. | |
- D (2) → Les routes et actions de contrôleurs ne sont à peu près pas protégées à l'aide d'un guard ET ne tiennent compte de l'utilisateur connecté lorsque pertinent. | |
- E (1) → Aucune protection de routes et actions en place. | |
Ajustements client et remplacement de l'API Supabase par votre API | 15 |
- A (15) → L'API Supabase a été remplacée et tous les ajustements requis ont été faits. | |
- B (12) → L'API Supabase a été remplacée et dans l'ensemble, les ajustements requis ont été faits. | |
- C (9) → L'API Supabase a été remplacée, mais il manque plusieurs ajustements OU des traces de l'API Supabase sont encore présentes. | |
- D (6) → L'API Supabase n'a pas été remplacé, mais certains ajustements ont été faits. | |
- E (3) → L'API Supabase n'a pas été remplacée et aucun ou très peu d'ajustement n'a été fait. | |
Implémentation de l'inscription et de l'authentification (client et serveur) | 10 |
- A (10) → L'authentification est présente et fonctionnelle, tout comme l'inscription d'un nouvel utilisateur. | |
- B (8) → L'authentification et l'inscription sont présentes, mais présente quelques soucis fonctionnels relevant du détail | |
- C (6) → L'authentification et l'inscription sont présentes, mais avec plusieurs enjeux au niveau du fonctionnement, n'empêchant pas toutefois le fonctionnement général | |
- D (4) → L'authentification et l'inscription sont présentes, mais avec plusieurs enjeux empêchant le fonctionnement. | |
- E (2) → L'authentification et l'inscription ne sont pas présentes ou pas fonctionnelles. | |
Utilisation de WebSocket | 10 |
Ajout et utilisation d'une base de données via l'ORM TypeORM | 10 |
- A (10) → TypeORM est très bien utilisé et implémenté. | |
- B (8) → Dans l'ensemble, TypeORM est bien utilisé. | |
- C (6) → Dans l'ensemble, TypeORM est utilisé, mais l'implémentation présente plusieurs lacunes. | |
- D (4) → TypeORM n'est à peu près pas utilisé ou n'est pas adéquatement utilisé. | |
- E (2) → TypeORM n'est pas utilisé ou n'est pas du tout utilisé de façon adéquate. | |
Tests client et serveur | 10 |
- A (10) → L'application est adéquatement testée | |
- B (8) → Dans l'ensemble, l'application est testée | |
- C (6) → L'application est testée, mais il manque des tests OU la qualité des tests est partiellement inadéquate. | |
- D (4) → La couverture de tests n'est pas suffisante ou les tests ne sont pas adéquats. | |
- E (2) → Il n'y a à peu près pas de tests. | |
Documentation, bonnes pratiques et qualité générale | 10 |
Déploiement | 5 |
Total | 100 |