Skip to content

🚀 API REST .NET 8 pour bibliothĂšques numĂ©riques avec authentification JWT, upload/tĂ©lĂ©chargement de contenus, systĂšme social (favoris, notes, commentaires), notifications email et protection DDoS. Tests unitaires, dĂ©ploiement Railway inclus.

License

Notifications You must be signed in to change notification settings

NDXDeveloper/API-REST-DotNet-Library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API REST .NET pour la gestion de livres et magazines

Auteur : Nicolas DEOUX (NDXDev@gmail.com)

Ce projet est une API REST développée en .NET 8.0 qui permet aux utilisateurs de stocker, consulter et télécharger des livres et magazines. L'API inclut plusieurs fonctionnalités telles que la gestion des utilisateurs, l'authentification, la gestion de contenus, et des statistiques.

🚀 FonctionnalitĂ©s principales

  • Gestion des utilisateurs : Inscription, connexion, gestion de profils avec rĂŽles et autorisations
  • Gestion des livres et magazines : Ajout, consultation, et tĂ©lĂ©chargement de contenus organisĂ©s par catĂ©gories et tags
  • BibliothĂšque personnelle : Gestion des favoris et de l'historique de lecture
  • Recherche et filtres avancĂ©s : Recherche par mots-clĂ©s, filtres par catĂ©gories, popularitĂ©, etc.
  • Notes et commentaires : PossibilitĂ© de noter et commenter des livres/magazines
  • Notifications : Notifications par email pour les nouveaux contenus ou mises Ă  jour
  • SĂ©curitĂ© et performance : Authentification JWT, protection contre les attaques courantes

đŸ› ïž Technologies utilisĂ©es

  • .NET 8.0 - Framework principal
  • ASP.NET Core - API REST
  • Entity Framework Core - ORM pour l'accĂšs aux donnĂ©es
  • MariaDB/MySQL - Base de donnĂ©es
  • JWT Bearer - Authentification et autorisation
  • Swagger - Documentation interactive de l'API
  • Identity - Gestion des utilisateurs et des rĂŽles

📋 PrĂ©requis

🔧 Installation

Installation rapide avec Makefile (Ubuntu/Linux)

# Installation complĂšte de l'environnement Ubuntu
make ubuntu-setup

# Configuration développement
make dev-setup

# Lancement en développement
make run-dev

Installation manuelle

  1. Clonez le dépÎt GitHub :

    git clone https://github.com/NDXDeveloper/API-REST-DotNet-Library.git
    cd API-REST-DotNet-Library/src
  2. Configurez la connexion à la base de données dans appsettings.json :

    {
      "ConnectionStrings": {
        "MariaDBConnection": "server=localhost;port=3306;database=librarydb;user=votre_user;password=votre_password"
      },
      "Jwt": {
        "Key": "VotreCleSecreteTresLongueEtComplexe",
        "Issuer": "LibraryApi",
        "Audience": "LibraryApiUsers"
      }
    }
  3. Installez les dépendances :

    dotnet restore
  4. Appliquez les migrations Entity Framework Core :

    dotnet ef database update
  5. Démarrez l'application :

    dotnet run

🐳 DĂ©ploiement avec Docker

# Construction de l'image Docker
make docker-build

# Lancement du conteneur
make docker-run

🚀 DĂ©ploiement Railway

# Connexion Ă  Railway
make railway-login

# Déploiement
make railway-deploy

📖 Documentation

  • Swagger UI : AprĂšs avoir dĂ©marrĂ© l'application, accĂ©dez Ă  http://localhost:5000/swagger pour la documentation interactive
  • Endpoints principaux :
    • /api/auth - Authentification et gestion des utilisateurs
    • /api/bookmagazine - Gestion des livres et magazines
    • /api/favorites - Gestion des favoris
    • /api/readinghistory - Historique de lecture
    • /api/notification - Notifications
    • /api/public - Endpoints publics

🔐 Utilisateur administrateur par dĂ©faut

L'application crée automatiquement un utilisateur administrateur au premier démarrage :

  • Email : admin@library.com
  • Mot de passe : AdminPass123!

📁 Structure du projet

API-REST-DotNet-Library/
├── src/
│   ├── Controllers/           # Contrîleurs API
│   │   ├── AuthController.cs
│   │   ├── BookMagazineController.cs
│   │   ├── FavoritesController.cs
│   │   └── ...
│   ├── Models/               # ModĂšles de donnĂ©es et DTOs
│   │   ├── ApplicationUser.cs
│   │   ├── BookMagazine.cs
│   │   ├── DTOs/
│   │   └── ...
│   ├── Data/                 # Contexte de base de donnĂ©es
│   │   └── ApplicationDbContext.cs
│   ├── Services/             # Services mĂ©tier
│   │   └── EmailService.cs
│   ├── Migrations/           # Migrations Entity Framework
│   ├── wwwroot/             # Fichiers statiques
│   │   ├── files/           # Livres et magazines uploadĂ©s
│   │   └── images/          # Images de couverture et profils
│   ├── Program.cs           # Point d'entrĂ©e
│   ├── appsettings.json     # Configuration
│   └── Makefile            # Automatisation des tñches
├── README.md
└── .gitignore

đŸ§Ș Tests

Pour lancer les tests unitaires :

dotnet test

Ou avec le Makefile :

make test

📊 FonctionnalitĂ©s dĂ©taillĂ©es

Authentification JWT

  • Inscription et connexion sĂ©curisĂ©es
  • Gestion des rĂŽles (Admin/User)
  • Tokens avec expiration configurable

Gestion des contenus

  • Upload de fichiers (PDF, images)
  • GĂ©nĂ©ration automatique d'UUID pour Ă©viter les conflits
  • SystĂšme de catĂ©gories et tags
  • Compteurs de vues et tĂ©lĂ©chargements

Recherche avancée

  • Recherche textuelle avec pagination
  • Filtres par catĂ©gorie, auteur, date
  • Tri par popularitĂ© ou date
  • Suggestions basĂ©es sur l'historique

SystĂšme social

  • Notes et commentaires avec rĂ©ponses
  • Favoris personnalisĂ©s
  • Historique de lecture
  • Notifications par email

🔧 Commandes Makefile disponibles

# Développement
make install         # Installer les dépendances
make build          # Builder le projet
make run-dev        # Lancer en développement
make run-prod       # Lancer en production

# Base de données
make migration-add NAME=nom    # Ajouter une migration
make migration-update          # Appliquer les migrations

# Déploiement
make docker-build   # Builder l'image Docker
make railway-deploy # Déployer sur Railway

# Outils
make ssl-dev        # Générer certificats SSL
make clean          # Nettoyer les artifacts

đŸ€ Contribuer

Les contributions sont les bienvenues ! Veuillez :

  1. Forker le projet
  2. Créer une branche pour votre fonctionnalité (git checkout -b feature/ma-fonctionnalite)
  3. Commiter vos changements (git commit -m 'Ajout de ma fonctionnalité')
  4. Pousser vers la branche (git push origin feature/ma-fonctionnalite)
  5. Ouvrir une Pull Request

📄 Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

📞 Contact

Nicolas DEOUX Email : NDXDev@gmail.com GitHub : NDXDeveloper


⭐ N'hésitez pas à mettre une étoile au projet si vous le trouvez utile !

About

🚀 API REST .NET 8 pour bibliothĂšques numĂ©riques avec authentification JWT, upload/tĂ©lĂ©chargement de contenus, systĂšme social (favoris, notes, commentaires), notifications email et protection DDoS. Tests unitaires, dĂ©ploiement Railway inclus.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published