Vino

Application de gestion de cave à vin

Une application complète développée avec ASP.NET Core 8.0, comprenant une API REST back office et une interface front office pour gérer l'inventaire, les commandes et les approvisionnements d'une cave à vin professionnelle.

Voir sur GitHub
Retour aux projets

Vue d'ensemble

Vino est une application complète conçue pour gérer l'ensemble des opérations d'une cave à vin professionnelle. Le système comprend une API RESTful back office et une interface front office permettant de suivre l'inventaire en temps réel, de gérer les commandes clients et fournisseurs, et d'automatiser le réapprovisionnement en fonction des seuils de stock configurables.

Développée avec les dernières technologies .NET, cette application suit les meilleures pratiques en matière d'architecture logicielle et de conception d'APIs REST.

Stack technique

C# / .NET 8.0

Framework backend

ASP.NET Core

Web API

Entity Framework Core

ORM

PostgreSQL

Base de données

Npgsql

Provider PostgreSQL

Swagger/OpenAPI

Documentation API

Fonctionnalités principales

Gestion des articles

Catalogue complet des vins avec caractéristiques détaillées (millésime, degré, volume, maison productrice).

Prix différenciés

Système de tarification multiple (prix unitaire, prix groupe, prix fournisseur).

Commandes clients

Système complet de gestion des commandes avec statuts et détails de chaque article commandé.

Gestion des stocks

Suivi en temps réel avec seuils minimum et système d'alerte pour le réapprovisionnement.

Commandes fournisseurs

Gestion des approvisionnements avec suivi des réceptions et mise à jour automatique des stocks.

Panier d'achat

Système de panier pour faciliter la création de commandes clients avec calcul automatique des totaux.

Architecture

L'application suit une architecture en couches bien définie avec une séparation claire des responsabilités.

Structure des controllers

API/
├── Controllers/
│   ├── ArticlesController.cs         (CRUD articles)
│   ├── ClientsController.cs          (gestion clients)
│   ├── FournisseursController.cs     (gestion fournisseurs)
│   ├── CommandeClientsController.cs  (commandes clients)
│   ├── CommandeFournisseursController.cs
│   ├── InventaireController.cs       (suivi stocks)
│   ├── PanierController.cs           (panier achat)
│   └── ... (8 autres controllers)

Modèle de données

Le système utilise Entity Framework Core avec des relations complexes entre les entités :

  • Relations one-to-many : Article → DetailCommandeClient
  • Relations many-to-many : Article ↔ Fournisseur
  • Contraintes : DeleteBehavior.Restrict pour préserver l'intégrité
  • Migrations : Gestion des évolutions de schéma

Points techniques notables

API RESTful complète

  • Endpoints conformes aux standards REST (GET, POST, PUT, DELETE)
  • Codes de réponse HTTP appropriés (200, 201, 400, 404, etc.)
  • Documentation Swagger/OpenAPI intégrée
  • Support CORS configuré

Gestion des données

  • Validation des données en entrée
  • Gestion des erreurs et exceptions
  • Transactions pour maintenir la cohérence
  • Pagination pour les grandes collections

Qualité du code

  • Architecture en couches (controllers, models, context)
  • Séparation des préoccupations
  • Code commenté et documenté
  • Tests unitaires (projet VinoTest)

Résultats et apprentissages

Compétences développées

  • Conception et implémentation d'une API REST professionnelle
  • Développement d'une interface front office utilisateur
  • Modélisation de bases de données complexes avec relations multiples
  • Utilisation avancée d'Entity Framework Core (migrations, relations, contraintes)
  • Gestion de la logique métier (stocks, commandes, prix)
  • Documentation d'API avec Swagger/OpenAPI
  • Tests et validation des endpoints
  • Architecture logicielle et design patterns

Statistiques du projet

12
controllers
15+
entités
50+
endpoints
100%
RESTful

Explorez le code source

Le code source complet est disponible sur GitHub avec toute la documentation nécessaire pour comprendre l'architecture et les choix techniques.

Voir le repository GitHub