|
1 | | -# LibreScript – Projet ASP.NET Core & Svelte |
2 | | - |
3 | | -## Présentation |
4 | | -LibreScript est une application web composée d’un backend ASP.NET Core (C#) et d’un frontend Svelte. Elle permet la gestion d’utilisateurs, de posts, de catégories et de commentaires, dans un style blog/forum moderne. |
5 | | - |
6 | | -## Architecture & Design Pattern |
7 | | -- **Backend** : ASP.NET Core (C#), architecture RESTful, pattern MVC (Model-View-Controller) |
8 | | -- **Frontend** : Svelte (Vite) |
9 | | -- **Base de données** : PostgreSQL (via Entity Framework Core) |
10 | | -- **Séparation des responsabilités** : |
11 | | - - **Controllers** : gèrent les routes HTTP, la logique métier et la validation des requêtes |
12 | | - - **Models/Entities** : représentent les tables de la base de données |
13 | | - - **DbContext** : centralise l’accès à la base de données |
14 | | - |
15 | | - |
16 | | -## Fonctionnalités principales |
17 | | -- **Gestion des utilisateurs** : |
18 | | - - Inscription, connexion (routes prêtes à être implémentées) |
19 | | - - Recherche par ID ou username |
20 | | -- **Gestion des posts** : |
21 | | - - CRUD complet (création, lecture, modification, suppression) |
22 | | - - Association à un utilisateur |
23 | | -- **Gestion des catégories** : |
24 | | - - CRUD complet |
25 | | - - Association de posts à des catégories |
26 | | -- **Gestion des commentaires** : |
27 | | - - CRUD complet |
28 | | - - Réponses imbriquées (replies) |
29 | | - - Association à un post et à un utilisateur |
30 | | -- **CORS configuré** pour permettre l’accès au backend depuis le frontend local |
31 | | -- **Configuration flexible** de la base de données via `appsettings.json` |
32 | | - |
33 | | -## Design technique |
34 | | -- **Pattern MVC** : |
35 | | - - Les contrôleurs exposent des routes REST (ex : `/api/post`, `/api/category`...) |
36 | | - - Les entités (models) sont mappées sur les tables PostgreSQL |
37 | | - - Le DbContext gère les transactions et le suivi des entités |
38 | | -- **Asynchrone** : la plupart des opérations sont asynchrones pour de meilleures performances |
39 | | -- **Sécurité** : endpoints prêts pour l’ajout d’authentification/autorisation |
40 | | - |
41 | | -## Lancement du projet |
42 | | -1. **Backend** |
43 | | - - Configurer la base de données dans `appsettings.json` si besoin |
44 | | - - Lancer le backend : |
45 | | - ```bash |
46 | | - cd dotnetBackend |
47 | | - dotnet run |
48 | | - ``` |
49 | | -2. **Frontend** |
50 | | - - Installer les dépendances et lancer le serveur Svelte : |
51 | | - ```bash |
52 | | - cd svelteFrontEnd |
53 | | - npm install |
54 | | - npm run dev |
55 | | - ``` |
56 | | - |
57 | | -## Exemples de routes API |
58 | | -- `GET /api/user/get-user/id/{id}` : récupérer un utilisateur par ID |
59 | | -- `POST /api/post` : créer un post |
60 | | -- `PUT /api/category/{id}` : modifier une catégorie |
61 | | -- `DELETE /api/comment/{id}` : supprimer un commentaire |
62 | | - |
63 | | -## Pour aller plus loin |
64 | | -- Ajouter l’authentification JWT |
65 | | -- Ajouter la pagination, la recherche, le tri |
66 | | -- Améliorer la gestion des erreurs et la validation |
67 | | -- Ajouter des tests unitaires et d’intégration |
68 | | -- **Déployer le projet avec Docker et Kubernetes** : |
69 | | - - Créer des fichiers Dockerfile pour le backend et le frontend |
70 | | - - Écrire des manifests Kubernetes (Deployment, Service, Ingress) |
71 | | - - Utiliser un cluster local (ex : minikube) ou cloud (AKS, GKE, EKS) |
72 | | - - Gérer la persistance de la base PostgreSQL avec un PersistentVolume |
73 | | - - Ajouter un fichier README/k8s.md pour la documentation du déploiement |
74 | | - |
75 | | ---- |
76 | | -Projet réalisé dans le cadre d’un projet de fin d’année. |
| 1 | +# LibreScript |
| 2 | + |
| 3 | +LibreScript est une application web / de bureau moderne développée avec une architecture full-stack, combinant un backend .NET et un frontend Svelte. |
| 4 | + |
| 5 | +## Architecture du Projet |
| 6 | + |
| 7 | +### Backend (.NET) |
| 8 | +Le backend est développé en C# avec .NET et comprend : |
| 9 | +- Une API RESTful |
| 10 | +- Une base de données avec Entity Framework Core |
| 11 | +- Des migrations pour la gestion du schéma de base de données |
| 12 | +- Une configuration Docker pour le déploiement |
| 13 | +- Une configuration Kubernetes pour l'orchestration |
| 14 | + |
| 15 | +### Frontend (Svelte) |
| 16 | +Le frontend est développé avec Svelte et comprend : |
| 17 | +- Une interface utilisateur moderne et réactive |
| 18 | +- Une intégration Electron pour le déploiement en tant qu'application de bureau |
| 19 | +- Une Intégration Web / Web Mobile |
| 20 | +- Une configuration de build optimisée |
| 21 | +- Des outils de développement modernes (ESLint, Vite, prettier) |
| 22 | + |
| 23 | +## Prérequis |
| 24 | + |
| 25 | +- .NET SDK 8.0 ou supérieur |
| 26 | +- Node.js 18 ou supérieur |
| 27 | +- Docker (optionnel, pour le déploiement) |
| 28 | +- Kubernetes (optionnel, pour l'orchestration) |
| 29 | + |
| 30 | +## Installation |
| 31 | + |
| 32 | +### Backend |
| 33 | +```bash |
| 34 | +cd dotnetBackend |
| 35 | +# Mac, Linux, BSD : ./setup.sh |
| 36 | +# Windows : start setup.bat |
| 37 | +dotnet restore |
| 38 | +# Optional : dotnet build |
| 39 | +# Ne Pas oublier de setup une db Postgres et l'url dans appsettings.json (Si docker utiliser une image postgres Docker) |
| 40 | +``` |
| 41 | + |
| 42 | +### Frontend |
| 43 | +```bash |
| 44 | +cd svelteFrontEnd |
| 45 | +npm install |
| 46 | +``` |
| 47 | + |
| 48 | +## Démarrage |
| 49 | + |
| 50 | +### Backend |
| 51 | +```bash |
| 52 | +cd dotnetBackend |
| 53 | +dotnet run |
| 54 | +``` |
| 55 | + |
| 56 | +### Frontend |
| 57 | +```bash |
| 58 | +cd svelteFrontEnd |
| 59 | +npm run dev |
| 60 | + |
| 61 | +``` |
| 62 | + |
| 63 | +## Déploiement |
| 64 | + |
| 65 | +### Docker |
| 66 | +Le projet inclut des configurations Docker pour le déploiement : |
| 67 | +- `Dockerfile` pour le backend |
| 68 | +- Configuration Kubernetes dans le dossier `k8s` |
| 69 | + |
| 70 | +### CI/CD |
| 71 | +Le projet inclut des configurations GitHub Actions pour l'intégration et le déploiement continus. |
| 72 | + |
| 73 | +## Structure des Dossiers |
| 74 | + |
| 75 | +``` |
| 76 | +LibreScript/ |
| 77 | +├── dotnetBackend/ # Backend .NET |
| 78 | +│ ├── Controllers/ # Contrôleurs API |
| 79 | +│ ├── Models/ # Modèles de données |
| 80 | +│ ├── Data/ # Contexte de base de données |
| 81 | +│ ├── Migrations/ # Migrations EF Core |
| 82 | +│ └── k8s/ # Configurations Kubernetes |
| 83 | +│ |
| 84 | +└── svelteFrontEnd/ # Frontend Svelte |
| 85 | + ├── src/ # Code source |
| 86 | + ├── static/ # Ressources statiques |
| 87 | + └── electron.mjs # Configuration Electron |
| 88 | +``` |
| 89 | + |
| 90 | +## Choix de la Stack Technique |
| 91 | + |
| 92 | +### Pourquoi .NET pour le Backend ? |
| 93 | +- **Performance et Scalabilité** : .NET est reconnu pour ses performances exceptionnelles et sa capacité à gérer des charges élevées, crucial pour un forum avec de nombreux utilisateurs simultanés |
| 94 | +- **Entity Framework Core** : Offre une gestion efficace des données avec des capacités de mise en cache avancées et une optimisation des requêtes |
| 95 | +- **Support natif de l'asynchrone** : Permet de gérer efficacement les opérations concurrentes et d'optimiser l'utilisation des ressources |
| 96 | +- **Sécurité robuste** : Intégration native avec des fonctionnalités de sécurité avancées pour protéger les données des utilisateurs |
| 97 | +- **Conteneurisation** : Support natif de Docker et Kubernetes pour une scalabilité horizontale facile |
| 98 | + |
| 99 | +### Pourquoi Svelte pour le Frontend ? |
| 100 | +- **Performance** : Svelte compile le code en JavaScript vanilla ultra-optimisé, offrant des performances supérieures aux frameworks traditionnels |
| 101 | +- **Taille réduite** : Le bundle final est plus léger, ce qui améliore les temps de chargement et l'expérience utilisateur |
| 102 | +- **Réactivité** : Gestion efficace des mises à jour du DOM, cruciale pour un forum avec des mises à jour en temps réel |
| 103 | +- **Electron** : Permet de créer une application de bureau native tout en réutilisant le code web, offrant une expérience utilisateur cohérente |
| 104 | +- **SEO-friendly** : Facilite l'indexation du contenu du forum par les moteurs de recherche |
| 105 | + |
| 106 | +### Architecture Scalable |
| 107 | +- **Microservices** : Architecture modulaire permettant une scalabilité indépendante des composants |
| 108 | +- **Load Balancing** : Distribution intelligente de la charge entre les serveurs |
| 109 | +- **Caching** : Mise en cache à plusieurs niveaux pour optimiser les performances |
| 110 | +- **Monitoring** : Outils de surveillance en temps réel pour détecter et résoudre les goulots d'étranglement |
| 111 | + |
| 112 | + |
| 113 | +## Contribution |
| 114 | + |
| 115 | +1. Fork le projet |
| 116 | +2. Créez une branche pour votre fonctionnalité |
| 117 | +3. Committez vos changements |
| 118 | +4. Poussez vers la branche |
| 119 | +5. Ouvrez une Pull Request |
| 120 | + |
| 121 | +## Licence |
| 122 | + |
| 123 | +Ce projet est sous licence libre. |
0 commit comments