Dependances

Packages NuGet, dependances inter-modules et services externes de Place API

Dependances

Packages NuGet

Toutes les versions sont gerees centralement dans Directory.Packages.props.

Analyseurs de code

PackageVersionDescription
StyleCop.Analyzers1.1.118Regles de style de code C#
Meziantou.Analyzer2.0.299Analyseur de bonnes pratiques .NET
Roslynator.Analyzers4.15.0Analyseur et refactoring Roslyn
Roslynator.CodeAnalysis.Analyzers4.15.0Analyseur de code Roslynator
Roslynator.Formatting.Analyzers4.15.0Analyseur de formatage Roslynator
Microsoft.VisualStudio.Threading.Analyzers17.14.15Analyseur de threading async
CSharpGuidelinesAnalyzer3.8.5Regles de guidelines C#
AsyncAwaitBestPractices10.0.0Bonnes pratiques async/await
Microsoft.SourceLink.GitHub8.0.0Lien source vers GitHub

Core

PackageVersionDescription
MediatR14.0.0Mediateur pour CQRS (IRequest/IRequestHandler)
MediatR.Contracts2.0.1Contrats MediatR
FluentValidation12.1.1Validation declarative
FluentValidation.AspNetCore11.3.1Integration ASP.NET Core
Mapster7.4.0Mapping d'objets (alternative a AutoMapper)
Mapster.DependencyInjection1.0.1Integration DI pour Mapster
IdGen3.0.7Generation d'identifiants distribues
Ardalis.GuardClauses5.0.0Guard clauses pour la validation
Humanizer.Core3.0.1Manipulation de chaines (pluralisation, etc.)
Polly8.6.5Resilience et retry policies
Scrutor7.0.0Scan d'assemblies pour DI
Sieve2.5.5Tri, filtrage et pagination dynamiques
Newtonsoft.Json13.0.4Serialisation JSON (usage legacy)
System.Linq.Async7.0.0Extensions LINQ asynchrones
Figgle / Figgle.Fonts0.6.5Art ASCII pour le banner de demarrage
UAParser3.1.47Parsing des User-Agents
NSubstitute5.3.0Framework de mocking pour les tests

ASP.NET Core

PackageVersionDescription
Microsoft.AspNetCore.Authentication.JwtBearer10.0.3Authentification JWT Bearer
Microsoft.AspNetCore.OpenApi10.0.3Support OpenAPI natif
Scalar.AspNetCore2.12.38Documentation API interactive (alternative a Swagger UI)
Swashbuckle.AspNetCore10.1.2Generation Swagger/OpenAPI
Asp.Versioning.Http8.1.1Versioning d'API
Asp.Versioning.Mvc8.1.1Versioning MVC
Yarp.ReverseProxy2.3.0Reverse proxy (reserve pour usage futur)

Entity Framework Core

PackageVersionDescription
Microsoft.EntityFrameworkCore10.0.3ORM principal
Npgsql.EntityFrameworkCore.PostgreSQL10.0.0Provider PostgreSQL
Npgsql10.0.1Driver ADO.NET PostgreSQL
EFCore.NamingConventions10.0.1Conventions de nommage (snake_case)
Microsoft.EntityFrameworkCore.Design10.0.3Outils de migration
Microsoft.EntityFrameworkCore.Relational10.0.3Abstractions relationnelles

Identity et authentification sociale

PackageVersionDescription
Microsoft.AspNetCore.Identity.EntityFrameworkCore10.0.3ASP.NET Identity avec EF Core
Google.Apis.Auth1.73.0Validation des tokens Google

Background Jobs

PackageVersionDescription
Hangfire.AspNetCore1.8.23Integration Hangfire avec ASP.NET Core
Hangfire.PostgreSql1.21.0Storage Hangfire sur PostgreSQL

Caching

PackageVersionDescription
EasyCaching.Core1.9.2Abstraction de cache
EasyCaching.InMemory1.9.2Cache en memoire

Messaging

PackageVersionDescription
MailKit4.12.0Client SMTP pour l'envoi d'emails
Mjml.Net3.4.0Rendu de templates MJML en HTML responsive
AWSSDK.SimpleNotificationService4.0.2.14Client AWS SNS pour les SMS

Observabilite (OpenTelemetry)

PackageVersionDescription
OpenTelemetry.Exporter.OpenTelemetryProtocol1.15.0Export OTLP
OpenTelemetry.Extensions.Hosting1.15.0Integration hosting
OpenTelemetry.Instrumentation.AspNetCore1.15.0Instrumentation ASP.NET Core
OpenTelemetry.Instrumentation.Http1.15.0Instrumentation HTTP
OpenTelemetry.Instrumentation.Runtime1.15.0Metriques runtime .NET
OpenTelemetry.Instrumentation.Process1.15.0-beta.1Metriques processus
OpenTelemetry.Exporter.Prometheus.AspNetCore1.15.0-beta.1Export Prometheus
Grafana.OpenTelemetry1.5.2Integration Grafana
Npgsql.OpenTelemetry10.0.1Instrumentation PostgreSQL

Health Checks

PackageVersionDescription
Microsoft.Extensions.Diagnostics.HealthChecks10.0.3Framework de health checks
AspNetCore.HealthChecks.NpgSql9.0.0Health check PostgreSQL
AspNetCore.HealthChecks.UI9.0.0Interface UI pour les health checks
AspNetCore.HealthChecks.UI.InMemory.Storage9.0.0Storage en memoire pour l'UI

Aspire

PackageVersionDescription
Aspire.Hosting.AppHost13.1.1Orchestration Aspire
Aspire.Hosting.PostgreSQL13.1.1Hosting PostgreSQL
Aspire.Hosting.Redis13.1.1Hosting Redis (reserve)
Aspire.Hosting.Docker13.1.1-previewHosting Docker

Tests

PackageVersionDescription
xUnit2.9.3Framework de tests
xunit.runner.visualstudio3.1.5Runner Visual Studio
FluentAssertions8.8.0Assertions fluides
NSubstitute5.3.0Framework de mocking
Microsoft.NET.Test.Sdk18.0.1SDK de tests .NET
Microsoft.AspNetCore.Mvc.Testing10.0.3Tests d'integration ASP.NET Core
Microsoft.AspNetCore.TestHost10.0.3Host de test ASP.NET Core
Testcontainers4.9.0Conteneurs Docker pour les tests
Testcontainers.PostgreSql4.9.0Conteneur PostgreSQL
Respawn7.0.0Reset de base de donnees entre les tests
Bogus35.6.5Generation de donnees de test
AutoBogus2.13.1Generation automatique avec Bogus
WebMotions.Fake.Authentication.JwtBearer10.0.0Faux JWT pour les tests

Dependances inter-modules

mermaid
graph TB
    API[Api] --> Identity[Identity]
    API --> Audit[Audit]
    API --> Messaging[Messaging]
    API --> SD[ServiceDefaults]

    Identity --> BB[BuildingBlocks]
    Identity --> MC[Messaging.Contracts]
    Identity --> IC[Identity.Contracts]

    Audit --> BB
    Audit --> IC

    Messaging --> BB
    Messaging --> MC[Messaging.Contracts]

    BB --> |aucune dependance module| BB
Module sourceDepend de
ApiIdentity, Audit, Messaging, ServiceDefaults, BuildingBlocks
IdentityBuildingBlocks, Identity.Contracts, Messaging.Contracts
AuditBuildingBlocks, Identity.Contracts (pour les constantes de roles)
MessagingBuildingBlocks, Messaging.Contracts
BuildingBlocksAucun module (packages NuGet uniquement)

Services externes

PostgreSQL

  • Usage : base de donnees principale, 5 bases separees en production
  • Bases : place_monolith (identity), place_audit, place_hangfire, place_persist_message, messaging
  • Version : 17
  • Configuration : wal_level=logical, max_prepared_transactions=10

AWS SNS (Simple Notification Service)

  • Usage : envoi de SMS
  • Region : configurable (eu-north-1 par defaut)
  • Authentification : access key/secret key ou IAM role

SMTP

  • Usage : envoi d'emails
  • Implementation : MailKit
  • Dev : Mailpit (capture locale sur port 1025, UI sur port 8025)
  • Production : serveur SMTP configurable

Services d'authentification sociale

  • Google : validation des ID tokens via Google.Apis.Auth
  • Facebook : validation via l'API Graph (graph.facebook.com/me)
  • Apple : validation des ID tokens via les cles publiques Apple

Variables d'environnement

VariableDescription
DATABASE_CONNECTION_STRINGConnexion PostgreSQL principale (Identity)
AUDIT_CONNECTION_STRINGConnexion PostgreSQL Audit
HANGFIRE_CONNECTION_STRINGConnexion PostgreSQL Hangfire
PERSIST_MESSAGE_CONNECTION_STRINGConnexion PostgreSQL messages persistants
JWT_PRIVATE_KEY_BASE64Cle privee RSA en Base64
JWT_ISSUEREmetteur JWT
JWT_AUDIENCEAudience JWT
REFRESH_TOKEN_PEPPERPepper pour le hash des refresh tokens
SOCIAL_AUTH_GOOGLE_CLIENT_IDClient ID Google
SOCIAL_AUTH_FACEBOOK_APP_IDApp ID Facebook
SOCIAL_AUTH_FACEBOOK_APP_SECRETApp Secret Facebook
SOCIAL_AUTH_APPLE_CLIENT_IDClient ID Apple
SOCIAL_AUTH_APPLE_KEY_IDKey ID Apple
SOCIAL_AUTH_APPLE_TEAM_IDTeam ID Apple
SNS_REGIONRegion AWS SNS
SNS_ACCESS_KEY_IDAccess Key AWS
SNS_SECRET_ACCESS_KEYSecret Key AWS
SMTP_HOSTServeur SMTP
SMTP_PORTPort SMTP
SMTP_USERNAMEUtilisateur SMTP
SMTP_PASSWORDMot de passe SMTP
SMTP_FROM_EMAILEmail expediteur
SMTP_FROM_NAMENom expediteur
SMTP_USE_SSLActiver TLS/SSL
API_PORTPort HTTP de l'API
ADMIN_WEB_PORTPort du dashboard admin