Lab - Frameworks coté Serveur

Application Web de gestion d’annonces immobilières

Ce TP a pour but de mettre en œuvre un projet complet de développement web full-stack avec les technologies modernes de l’écosystème TypeScript.
L’application visée est un site de gestion d’annonces immobilières, intégrant :

Ce TP servira de base à la poursuite du cours sur les Web Services et la présentation des données (data visualisation).


User Story

Un site de gestion d’annonces immobilières permet de publier, consulter et gérer des annonces selon les rôles utilisateurs :

Rôles et droits

Contenu d’une annonce

Chaque annonce contient les informations suivantes :


Objectifs pédagogiques

Ce TP vise à mobiliser l’ensemble des compétences suivantes :


Organisation du projet

Structure recommandée


src/
├── app/
│   ├── annonces/
│   │   ├── page.tsx            → Liste des annonces
│   │   ├── [id]/page.tsx       → Détail d’une annonce
│   │   ├── new/page.tsx        → Création d’une annonce (agents)
│   │   └── edit/[id]/page.tsx  → Modification d’une annonce
│   ├── login/page.tsx          → Connexion
│   ├── register/page.tsx       → Inscription
│   └── layout.tsx, page.tsx    → Structure globale du site
├── lib/
│   └── prisma.ts               → Initialisation du client Prisma
├── prisma/
│   └── schema.prisma           → Modèle de données
└── public/                     → Images et assets


Étapes à suivre

Étape 1 — Modélisation et base de données

Étape 2 — Authentification et rôles

Étape 3 — CRUD des annonces

Étape 4 — Interaction utilisateur

Étape 5 — UX / UI

Étape 6 — Tests

Objectif

Valider la fiabilité et la cohérence de l’application en testant :

  1. Les fonctionnalités métiers :
    • Création, lecture, mise à jour, suppression d’une annonce.
    • Authentification / déconnexion d’un utilisateur.
    • Restrictions d’accès selon le rôle.
  2. Les interactions avec la base de données :
    • Vérifier que Prisma renvoie les bons résultats.
    • Tester les relations (annonce → agent, question → annonce).
  3. Les routes et API Next.js :
    • Vérifier les statuts de réponse HTTP (200, 401, 403…).
    • S’assurer que les endpoints protégés renvoient une erreur pour les utilisateurs non autorisés.

Hébergement et rendu

Ce projet à réaliser en binome devra être hébergé sur la forge universitaire :
https://www-apps.univ-lehavre.fr/forge/

Dès le début du TP, envoyez un mail à
yoann.pigne@univ-lehavre.fr
avec pour objet :
[M2 IWOCS WEB] Projet Annonces Immo

Incluez :

Ajoutez-moi en tant que developer sur la forge.


Évaluation

Le projet devra être rendu avant le 1er novembre 2025 (délai impératif).
Il servira de support à un oral technique le 4 novembre 2025.

Les aptitudes évaluées sont détaillées dans le tableau du silabus : </teaching/WebDev2/#evaluations-et-aptitudes>

Le travail est à réaliser en binôme.
Chaque membre doit pouvoir présenter l’ensemble du projet.


Pistes d’amélioration (optionnel)


Conseil : gardez une approche itérative. Commencez par la structure (modèles, routes, CRUD minimal), puis ajoutez progressivement l’authentification, les rôles et les fonctionnalités avancées. ```