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 à :
- HTTP : http://localhost:5038
- HTTPS : https://localhost:7095
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
Informationpar défaut,Warningpour ASP.NET Core, etDebugpour 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
IConfigurationet 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érieurMicrosoft.*→ 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.