Skip to content

Commit 5bc06bd

Browse files
committed
added docs
1 parent 3db820e commit 5bc06bd

File tree

4 files changed

+157
-76
lines changed

4 files changed

+157
-76
lines changed

Documents/LadderThroughProject.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
## Difficultés rencontrées et solutions apportées
2+
3+
### .NET & C#
4+
5+
**Difficultés :**
6+
- Le langage C# m’était totalement inconnu, ce qui a entraîné des difficultés avec la syntaxe et les conventions.
7+
- La documentation officielle de .NET s’est révélée souvent peu claire, en particulier sur certains aspects du framework.
8+
9+
**Solutions :**
10+
- Étude de code existant pour assimiler les bases du langage.
11+
- Entraînement progressif à travers des exemples simples.
12+
- Approfondissement de l’architecture MVC avec .NET pour mieux structurer l’application.
13+
14+
### Svelte
15+
16+
**Difficultés :**
17+
- Manque de familiarité avec la couche service dans Svelte.
18+
- Confusion entre les variables et fonctions accessibles côté client et celles réservées au serveur.
19+
20+
**Solutions :**
21+
- Lecture approfondie de la documentation officielle.
22+
- Tests pratiques pour bien comprendre la séparation client/serveur dans SvelteKit.
23+
24+
### Docker & PostgreSQL
25+
26+
**Difficultés :**
27+
- Déploiement de la base de données PostgreSQL via Docker particulièrement complexe.
28+
- Entity Framework Core posait des problèmes de connexion à PostgreSQL sur macOS.
29+
- L’erreur était liée à au conteneur officiel lui même
30+
31+
**Solutions :**
32+
- Analyse des logs et troubleshooting approfondi des conteneurs.
33+
- Résolution manuelle du problème en identifiant et corrigeant la dépendance responsable.
34+

Documents/MCD.png

30.6 KB
Loading

Documents/Readme.md

Lines changed: 123 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,123 @@
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.

Documents/usecase.png

69.6 KB
Loading

0 commit comments

Comments
 (0)