{"id":48540548,"url":"https://github.com/ndxdeveloper/api-rest-dotnet-library","last_synced_at":"2026-04-08T04:02:46.928Z","repository":{"id":257972874,"uuid":"861220749","full_name":"NDXDeveloper/API-REST-DotNet-Library","owner":"NDXDeveloper","description":"🚀 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.","archived":false,"fork":false,"pushed_at":"2025-08-02T23:19:54.000Z","size":21753,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-02T23:31:17.840Z","etag":null,"topics":["crud-operations","csharp","dotnet","dotnet-core","entity-framework-core","jwt-authentication","mariadb","mysql","rest-api","swagger"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NDXDeveloper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-22T10:33:58.000Z","updated_at":"2025-08-02T23:19:57.000Z","dependencies_parsed_at":"2024-10-26T01:29:40.410Z","dependency_job_id":"35021dee-8c61-4d65-8a9c-ac62e576d0ec","html_url":"https://github.com/NDXDeveloper/API-REST-DotNet-Library","commit_stats":null,"previous_names":["nide65/api-rest-dotnet-library","ndxdeveloper/api-rest-dotnet-library"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/NDXDeveloper/API-REST-DotNet-Library","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2FAPI-REST-DotNet-Library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2FAPI-REST-DotNet-Library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2FAPI-REST-DotNet-Library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2FAPI-REST-DotNet-Library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NDXDeveloper","download_url":"https://codeload.github.com/NDXDeveloper/API-REST-DotNet-Library/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2FAPI-REST-DotNet-Library/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31539230,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crud-operations","csharp","dotnet","dotnet-core","entity-framework-core","jwt-authentication","mariadb","mysql","rest-api","swagger"],"created_at":"2026-04-08T04:02:35.739Z","updated_at":"2026-04-08T04:02:46.914Z","avatar_url":"https://github.com/NDXDeveloper.png","language":"C#","readme":"# API REST .NET pour la gestion de livres et magazines\n\n**Auteur :** Nicolas DEOUX (NDXDev@gmail.com)\n\nCe 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.\n\n## 🚀 Fonctionnalités principales\n\n- **Gestion des utilisateurs** : Inscription, connexion, gestion de profils avec rôles et autorisations\n- **Gestion des livres et magazines** : Ajout, consultation, et téléchargement de contenus organisés par catégories et tags\n- **Bibliothèque personnelle** : Gestion des favoris et de l'historique de lecture\n- **Recherche et filtres avancés** : Recherche par mots-clés, filtres par catégories, popularité, etc.\n- **Notes et commentaires** : Possibilité de noter et commenter des livres/magazines\n- **Notifications** : Notifications par email pour les nouveaux contenus ou mises à jour\n- **Sécurité et performance** : Authentification JWT, protection contre les attaques courantes\n\n## 🛠️ Technologies utilisées\n\n- **.NET 8.0** - Framework principal\n- **ASP.NET Core** - API REST\n- **Entity Framework Core** - ORM pour l'accès aux données\n- **MariaDB/MySQL** - Base de données\n- **JWT Bearer** - Authentification et autorisation\n- **Swagger** - Documentation interactive de l'API\n- **Identity** - Gestion des utilisateurs et des rôles\n\n## 📋 Prérequis\n\n- [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)\n- [MySQL/MariaDB](https://dev.mysql.com/downloads/) ou [Docker](https://www.docker.com/)\n- [Git](https://git-scm.com/)\n\n## 🔧 Installation\n\n### Installation rapide avec Makefile (Ubuntu/Linux)\n\n```bash\n# Installation complète de l'environnement Ubuntu\nmake ubuntu-setup\n\n# Configuration développement\nmake dev-setup\n\n# Lancement en développement\nmake run-dev\n```\n\n### Installation manuelle\n\n1. **Clonez le dépôt GitHub :**\n   ```bash\n   git clone https://github.com/NDXDeveloper/API-REST-DotNet-Library.git\n   cd API-REST-DotNet-Library/src\n   ```\n\n2. **Configurez la connexion à la base de données dans `appsettings.json` :**\n   ```json\n   {\n     \"ConnectionStrings\": {\n       \"MariaDBConnection\": \"server=localhost;port=3306;database=librarydb;user=votre_user;password=votre_password\"\n     },\n     \"Jwt\": {\n       \"Key\": \"VotreCleSecreteTresLongueEtComplexe\",\n       \"Issuer\": \"LibraryApi\",\n       \"Audience\": \"LibraryApiUsers\"\n     }\n   }\n   ```\n\n3. **Installez les dépendances :**\n   ```bash\n   dotnet restore\n   ```\n\n4. **Appliquez les migrations Entity Framework Core :**\n   ```bash\n   dotnet ef database update\n   ```\n\n5. **Démarrez l'application :**\n   ```bash\n   dotnet run\n   ```\n\n## 🐳 Déploiement avec Docker\n\n```bash\n# Construction de l'image Docker\nmake docker-build\n\n# Lancement du conteneur\nmake docker-run\n```\n\n## 🚀 Déploiement Railway\n\n```bash\n# Connexion à Railway\nmake railway-login\n\n# Déploiement\nmake railway-deploy\n```\n\n## 📖 Documentation\n\n- **Swagger UI** : Après avoir démarré l'application, accédez à `http://localhost:5000/swagger` pour la documentation interactive\n- **Endpoints principaux** :\n  - `/api/auth` - Authentification et gestion des utilisateurs\n  - `/api/bookmagazine` - Gestion des livres et magazines\n  - `/api/favorites` - Gestion des favoris\n  - `/api/readinghistory` - Historique de lecture\n  - `/api/notification` - Notifications\n  - `/api/public` - Endpoints publics\n\n## 🔐 Utilisateur administrateur par défaut\n\nL'application crée automatiquement un utilisateur administrateur au premier démarrage :\n\n- **Email :** `admin@library.com`\n- **Mot de passe :** `AdminPass123!`\n\n## 📁 Structure du projet\n\n```\nAPI-REST-DotNet-Library/\n├── src/\n│   ├── Controllers/           # Contrôleurs API\n│   │   ├── AuthController.cs\n│   │   ├── BookMagazineController.cs\n│   │   ├── FavoritesController.cs\n│   │   └── ...\n│   ├── Models/               # Modèles de données et DTOs\n│   │   ├── ApplicationUser.cs\n│   │   ├── BookMagazine.cs\n│   │   ├── DTOs/\n│   │   └── ...\n│   ├── Data/                 # Contexte de base de données\n│   │   └── ApplicationDbContext.cs\n│   ├── Services/             # Services métier\n│   │   └── EmailService.cs\n│   ├── Migrations/           # Migrations Entity Framework\n│   ├── wwwroot/             # Fichiers statiques\n│   │   ├── files/           # Livres et magazines uploadés\n│   │   └── images/          # Images de couverture et profils\n│   ├── Program.cs           # Point d'entrée\n│   ├── appsettings.json     # Configuration\n│   └── Makefile            # Automatisation des tâches\n├── README.md\n└── .gitignore\n```\n\n## 🧪 Tests\n\nPour lancer les tests unitaires :\n```bash\ndotnet test\n```\n\nOu avec le Makefile :\n```bash\nmake test\n```\n\n## 📊 Fonctionnalités détaillées\n\n### Authentification JWT\n- Inscription et connexion sécurisées\n- Gestion des rôles (Admin/User)\n- Tokens avec expiration configurable\n\n### Gestion des contenus\n- Upload de fichiers (PDF, images)\n- Génération automatique d'UUID pour éviter les conflits\n- Système de catégories et tags\n- Compteurs de vues et téléchargements\n\n### Recherche avancée\n- Recherche textuelle avec pagination\n- Filtres par catégorie, auteur, date\n- Tri par popularité ou date\n- Suggestions basées sur l'historique\n\n### Système social\n- Notes et commentaires avec réponses\n- Favoris personnalisés\n- Historique de lecture\n- Notifications par email\n\n## 🔧 Commandes Makefile disponibles\n\n```bash\n# Développement\nmake install         # Installer les dépendances\nmake build          # Builder le projet\nmake run-dev        # Lancer en développement\nmake run-prod       # Lancer en production\n\n# Base de données\nmake migration-add NAME=nom    # Ajouter une migration\nmake migration-update          # Appliquer les migrations\n\n# Déploiement\nmake docker-build   # Builder l'image Docker\nmake railway-deploy # Déployer sur Railway\n\n# Outils\nmake ssl-dev        # Générer certificats SSL\nmake clean          # Nettoyer les artifacts\n```\n\n## 🤝 Contribuer\n\nLes contributions sont les bienvenues ! Veuillez :\n\n1. Forker le projet\n2. Créer une branche pour votre fonctionnalité (`git checkout -b feature/ma-fonctionnalite`)\n3. Commiter vos changements (`git commit -m 'Ajout de ma fonctionnalité'`)\n4. Pousser vers la branche (`git push origin feature/ma-fonctionnalite`)\n5. Ouvrir une Pull Request\n\n## 📄 Licence\n\nCe projet est sous licence MIT - voir le fichier [LICENSE](LICENSE) pour plus de détails.\n\n## 📞 Contact\n\n**Nicolas DEOUX**\nEmail : NDXDev@gmail.com\nGitHub : [NDXDeveloper](https://github.com/NDXDeveloper)\n\n---\n\n⭐ N'hésitez pas à mettre une étoile au projet si vous le trouvez utile !\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndxdeveloper%2Fapi-rest-dotnet-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fndxdeveloper%2Fapi-rest-dotnet-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndxdeveloper%2Fapi-rest-dotnet-library/lists"}