Files
webzine/Webzine.Documentation/Installation/equipe 1 - dossier de configuration.md

8.1 KiB

Dossier de configuration - Projet Webzine

Équipe 1 Formation : Développement .NET niveau 1 / Dr1-P4 Date : Mars 2026


Table des modifications

Date Auteur
25/03 Clément Bobin
31/03 Joséphine Vetu
08/04 Joséphine Vetu

1. Prérequis

Avant de lancer l'application, assurez-vous d'avoir installé les outils suivants :

Outil Version minimale Lien
.NET SDK 10.0 https://dotnet.microsoft.com/download
Node.js (optionnel, pour outils front) 18+ https://nodejs.org
Git 2.x https://git-scm.com
Un IDE Visual Studio 2022+ ou Rider -

2. Récupérer le projet

git clone <url-du-dépôt>
cd Webzine

3. Structure des projets

Le projet est organisé en plusieurs bibliothèques de classes et une application web :

Webzine.sln
├── Webzine.Entity/                  → Entités du domaine (modèles)
├── Webzine.Entity.Tests/            → Tests unitaires MSTest
├── Webzine.Repository.Contracts/   → Interfaces des repositories
├── Webzine.Repository/             → Implémentations des repositories
├── Webzine.Business.Contracts/     → Interfaces de la couche métier
├── Webzine.Business/               → Logique métier
├── Webzine.EntitiesContext/        → Contexte Entity Framework (à venir)
├── Webzine.Documentation/          → Documentation, StyleCop, rapports
└── Webzine.WebApplication/         → Application ASP.NET Core MVC (.NET 10)

4. Lancer l'application

Via la ligne de commande

cd Webzine.WebApplication
dotnet run

L'application est accessible par défaut à :

Ces URLs sont configurées dans Webzine.WebApplication/Properties/launchSettings.json.

Via Visual Studio

Ouvrir Webzine.sln, sélectionner le profil https ou http, puis lancer avec F5 ou Ctrl+F5.


5. Configuration applicative

La configuration de l'application est répartie sur plusieurs fichiers appsettings selon l'environnement.

appsettings.json - configuration commune

Ce fichier contient les paramètres partagés entre tous les environnements :

  • Logging : niveau Information par défaut, Warning pour ASP.NET Core, et Debug pour la couche repository afin de tracer les requêtes.
  • Webzine : paramètres d'affichage (nombre de chroniques et de titres sur la page d'accueil, nombre de lignes dans les vues d'administration). Ces valeurs sont injectées via IConfiguration et modifiables sans recompilation.
  • ConnectionStrings : chaînes de connexion pour SQLite (dev) et PostgreSQL (prod). L'application bascule de l'une à l'autre selon la valeur de Repository.
  • SpotifySeeder : paramètres de l'import Spotify - credentials, marché cible, genres musicaux, et limites de volumétrie (artistes par genre, albums par artiste, titres par album, commentaires par titre).
  • EfPerformance : seuil en millisecondes au-delà duquel une requête Entity Framework est considérée comme lente (60 ms par défaut).

Configuration par environnement

Développement - appsettings.Development.json

{
  "Seeder": "Spotify",
  "Repository": "Db",
  "SpotifySeeder": {
    "ClientId": "",
    "ClientSecret": ""
  }
}

Production - appsettings.Production.json

{
  "Seeder": "Local",
  "Repository": "Db",
  "SpotifySeeder": {
    "ClientId": "",
    "ClientSecret": ""
  }
}

Valeurs acceptées

Les propriétés Seeder et Repository correspondent aux enums suivants :

public enum SeederType
{
    Local,    // Données mockées en mémoire
    Spotify,  // Données récupérées depuis l'API Spotify
}
 
public enum RepositoryType
{
    Local,  // Données en mémoire (pas de base de données)
    Db,     // Base de données (SQLite en dev, PostgreSQL en prod)
}
Propriété Type Valeurs acceptées Description
Seeder SeederType Local, Spotify Source des données au démarrage
Repository RepositoryType Local, Db Mode d'accès aux données
SpotifySeeder.ClientId string - Identifiant de l'application Spotify
SpotifySeeder.ClientSecret string - Secret de l'application Spotify

6. Logging (NLog)

La configuration du logging se trouve dans Webzine.WebApplication/nlog.config.

Les logs sont écrits dans le dossier /Logs/ avec deux fichiers :

Fichier Contenu
nlog-all-{date}.log Tous les logs (Debug et supérieur pour l'application)
nlog-own-{date}.log Logs applicatifs avec URL de la requête

Les logs de la console sont également activés, utiles lors du développement.

Niveaux configurés :

  • Webzine.WebApplication.* → Debug et supérieur
  • Microsoft.* → Warning et supérieur (pour réduire le bruit)
  • Microsoft.Hosting.Lifetime* → Info (pour voir le démarrage de l'appli)

Pour modifier le niveau de log minimum sans recompiler, éditer la règle correspondante dans nlog.config. NLog recharge automatiquement sa configuration (autoReload="true").


7. Lancer les tests

cd Webzine.Entity.Tests
dotnet test

Ou depuis la solution complète :

dotnet test Webzine.sln

Les tests vérifient les contraintes de validation (annotations DataAnnotations) sur toutes les entités. Ils s'exécutent en parallèle au niveau des méthodes ([assembly: Parallelize(Scope = ExecutionScope.MethodLevel)]).

Résultat attendu : 55 tests passants, 0 échec.


8. Routes principales

URL Contrôleur Description
/ AccueilController.Index Page d'accueil
/artiste/{nom} ArtisteController.Index Page d'un artiste
/titre/{id} TitreController.Details Détail d'un titre
/titre/style/{style} TitreController.Style Titres par style
/recherche (POST) RechercheController.Index Résultats de recherche
/Administration/Dashboard DashboardController.Index Tableau de bord admin
/Administration/Artiste ArtisteController (admin) Gestion des artistes
/Administration/Titre TitreController (admin) Gestion des titres
/Administration/Style StyleController Gestion des styles
/Administration/Commentaire CommentaireController Gestion des commentaires

10. Variables d'environnement

L'environnement est contrôlé par la variable ASPNETCORE_ENVIRONMENT. En développement, elle vaut Development (configuré dans launchSettings.json).

En production, positionner :

export ASPNETCORE_ENVIRONMENT=Production

Cela désactive les pages d'erreur détaillées et active les optimisations de performance ASP.NET Core.

Ajout du pre-commit

git config core.hooksPath Webzine.Documentation/git_hooks

Les fichiers présents dans le dossier git_hooks sont les suivants: Le pre-commit reformatte le code à chaque commit. Le commit-msg vérifie si le message du commit respecte bien les conventions du cahier des charges:

  • le message référence un ticket
  • le message termine par un point
  • le message doit faire au moins 10 caractères

Il n'est pas nécessaire de les copier et de les ajouter au dossier caché .git. La commande ci-dessus suffit.