Aller au contenu principal

(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 de Discord (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'un WebSocket 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

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 repo serveur)
    • Le contenu de votre fichier .env
    • L'URL de votre application déployée sur Render.com
  • 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:
    1. À partir de pgAdmin
    2. Sélectionner votre BD
    3. Clic droit sur la BD
    4. Choisir Backup...
    5. Conserver les options par défaut (Custom pour le format)
    6. Donner un nom et appuyer sur Backup
  • Remis avant le 12 décembre 2025 23:59.

Grille d'évaluation

CritèrePoints
Implémentation des fonctionnalités requises et niveau de complétion de l'API20
- 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'API5
- 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'API5
- 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 API15
- 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 WebSocket10
Ajout et utilisation d'une base de données via l'ORM TypeORM10
- 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 serveur10
- 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érale10
Déploiement5
Total100