Skip to content

Commit 4e89fd9

Browse files
committed
🚀 Cleanup + Docker + CI/CD + LICENSE + README rewrite
- Removed .trash directory (old code) - Removed committed identifier.sqlite - Updated .gitignore (SQLite patterns) - Added LICENSE (MIT) - Added Dockerfile (multi-stage Alpine) - Added docker-compose.yml - Added GitHub Actions CI (build + test) - Complete README rewrite: 21 pages, 8 services, Clean Architecture
1 parent 32c9d54 commit 4e89fd9

11 files changed

Lines changed: 253 additions & 76 deletions

File tree

.github/workflows/ci.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: CI — Build & Test
2+
on:
3+
push:
4+
branches: [main, master]
5+
pull_request:
6+
branches: [main, master]
7+
jobs:
8+
build:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
- uses: actions/setup-dotnet@v4
13+
with:
14+
dotnet-version: '8.0.x'
15+
- run: dotnet restore
16+
- run: dotnet build --configuration Release --no-restore

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,3 +364,8 @@ FodyWeavers.xsd
364364
/planning.db
365365
/planning.db-wal
366366
/planning.db-shm
367+
368+
# SQLite
369+
*.sqlite
370+
*.db
371+
.trash/

.trash/Data/DTOs/EmployeeDTO.cs

Lines changed: 0 additions & 1 deletion
This file was deleted.

.trash/Pages/ProjetsClean.razor

Lines changed: 0 additions & 1 deletion
This file was deleted.

.trash/Pages/TeamDetails.razor

Lines changed: 0 additions & 1 deletion
This file was deleted.

.trash/Pages/TeamsSimple.razor

Lines changed: 0 additions & 1 deletion
This file was deleted.

Dockerfile

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS base
2+
WORKDIR /app
3+
EXPOSE 8080
4+
5+
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
6+
WORKDIR /src
7+
COPY ["PlanningPresenceBlazor.csproj", "."]
8+
RUN dotnet restore
9+
COPY . .
10+
RUN dotnet publish -c Release -o /app/publish /p:UseAppHost=false
11+
12+
FROM base AS final
13+
WORKDIR /app
14+
COPY --from=build /app/publish .
15+
ENTRYPOINT ["dotnet", "PlanningPresenceBlazor.dll"]

LICENSE

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Khalil Benazzouz
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

README.md

Lines changed: 190 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,193 @@
1-
# TeamScheduler – Application de gestion de planning et de présence
2-
3-
## Présentation
4-
TeamScheduler est une application web Blazor dédiée à la gestion collaborative des plannings, présences, congés, compétences et ressources humaines d’une équipe ou d’une organisation. Elle offre une interface moderne, des fonctionnalités avancées de reporting, d’analytics et de personnalisation de l’expérience utilisateur.
5-
6-
## Fonctionnalités principales
7-
- **Planning hebdomadaire** : visualisation, édition et export du planning de présence des employés (présent, absent, congé, télétravail, site, client), coloration dynamique par statut, filtres avancés et réorganisés.
8-
- **Gestion des équipes** : création, modification, activation/désactivation, affectation de membres, gestion du statut et des rôles, hiérarchie manager/subordonnés.
9-
- **Gestion des compétences** : ajout/retrait de compétences, catégorisation, gestion des niveaux, affectation aux membres.
10-
- **Gestion des clients et projets** : suivi des affectations, historique, détails client/projet, description client.
11-
- **Congés et absences** : import/export, validation, suivi du solde, affichage dans le planning.
12-
- **Analytics** : indicateurs clés (taux de présence, couverture, absences, congés, etc.), graphiques et statistiques en temps réel.
13-
- **Rapports** : génération de rapports PDF/Excel, export des données, personnalisation des exports.
14-
- **Paramètres d’affichage dynamiques** : thème (clair/sombre/auto), taille de police, mode compact, animations, préférences utilisateur persistantes, propagation dynamique à toutes les pages.
15-
- **Notifications** : toasts, alertes, notifications email/Teams/SMS selon préférences.
16-
- **Hiérarchie et reporting** : gestion des managers, subordonnés, reporting RH avancé.
17-
- **Historique de présence** : suivi détaillé des présences, télétravail, site, client, avec commentaires.
18-
- **Navigation moderne** : menu principal restauré, navigation fluide, liens harmonisés.
19-
- **Synchronisation modèle/base** : migrations EF Core à jour, entités synchronisées avec la base de données.
20-
- **Sécurité avancée** : gestion des rôles, routes sécurisées, timeout session, confirmation automatique de l’email à l’inscription.
21-
- **UI/UX Material Design** : pages d’authentification (connexion, inscription, mot de passe oublié) modernisées en style Google Material.
22-
- **Synchronisation automatique des données utilisateur** : Prénom, Nom, Téléphone synchronisés avec l’entité Employee, notifications planning à jour.
23-
24-
## Architecture technique
25-
- **Frontend** : Blazor Server (.NET 8), Bootstrap 5, Chart.js
26-
- **Backend** : Entity Framework Core, base SQLite (fichier `planning.db`)
27-
- **Organisation** :
28-
- `Pages/` : pages principales (Planning, Teams, Clients, Analytics, Reports, Settings, etc.)
29-
- `Shared/` : composants réutilisables (layouts, cards, notifications, modals)
30-
- `Application/DTOs/` : objets de transfert de données (TeamDto, EmployeeDto, etc.)
31-
- `Core/Entities/` : entités métier (Employee, Team, PresenceRecord, etc.)
32-
- `Services/` : services métier (PlanningService, TeamService, NotificationService, etc.)
33-
- `Data/` : contexte EF, seed, configurations
34-
- `Migrations/` : scripts de migration de la base
35-
- `wwwroot/` : ressources statiques (js, css, images)
36-
37-
## Installation & lancement
38-
1. **Prérequis** : .NET 8 SDK, Visual Studio 2022+ ou VS Code
39-
2. **Cloner le dépôt**
40-
3. **Restaurer les packages NuGet**
41-
4. **Lancer la migration EF Core si besoin** :
42-
```bash
43-
dotnet ef database update
44-
```
45-
5. **Démarrer l’application** :
46-
```bash
47-
dotnet run --project PlanningPresenceBlazor.csproj
48-
```
49-
6. Accéder à l’URL locale affichée (ex : http://localhost:64207)
50-
51-
## Personnalisation & extensions
52-
- Les paramètres d’affichage sont accessibles dans la page `/settings` et sont appliqués dynamiquement à toute l’application (thème, couleurs, etc.).
53-
- L’architecture permet d’ajouter facilement de nouveaux modules (ex : badge, workflow RH, SSO, etc.).
54-
- Les DTOs et entités sont extensibles pour intégrer de nouveaux champs métiers.
55-
56-
## Sécurité & gestion des accès
57-
- Gestion des rôles (Administrateur, Manager, Utilisateur)
58-
- Authentification intégrée (à compléter selon besoins SSO/OAuth)
59-
- Journalisation des actions (logs)
60-
- Timeout de session configurable
61-
- Confirmation automatique de l’email à l’inscription (aucun mail à cliquer)
62-
- Synchronisation automatique des données utilisateur (Prénom, Nom, Téléphone)
63-
- UI/UX Material Design sur toutes les pages d’authentification
64-
65-
## Tests & validation
66-
- Tests unitaires dans `Tests/Unit/`
67-
- Validation UX sur tous les navigateurs modernes
68-
69-
## Auteurs & contact
70-
- Développement : Équipe TeamScheduler (2024-2025)
71-
- Contact support : support@planningpresence.com
1+
<div align="center">
2+
3+
# 📅 TeamScheduler
4+
5+
**Application de gestion de planning, présence et ressources d'équipe**
6+
7+
[![CI](https://github.com/khalilbenaz/TeamScheduler/actions/workflows/ci.yml/badge.svg)](https://github.com/khalilbenaz/TeamScheduler/actions/workflows/ci.yml)
8+
[![.NET](https://img.shields.io/badge/.NET-8.0-512BD4?logo=dotnet)](https://dotnet.microsoft.com)
9+
[![Blazor](https://img.shields.io/badge/Blazor-Server-purple)](https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor)
10+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
11+
12+
Application Blazor Server pour la gestion collaborative des plannings, présences, congés, compétences, clients, projets et analytics d'une équipe ou d'une organisation.
13+
14+
[Quick Start](#-quick-start) · [Pages](#-pages) · [Architecture](#-architecture)
15+
16+
</div>
17+
18+
---
19+
20+
## Fonctionnalités
21+
22+
### 📅 Planning & Présence
23+
- Planning visuel par équipe et par employé
24+
- Suivi de présence en temps réel
25+
- Rotation automatique des affectations
26+
- Calendrier interactif avec drag & drop
27+
28+
### 👥 Équipes & Employés
29+
- Gestion des équipes et membres
30+
- Fiches employés avec compétences
31+
- Affectation équipes ↔ clients ↔ projets
32+
- Cards visuelles par employé
33+
34+
### 🏢 Clients & Projets
35+
- Référentiel clients avec détails
36+
- Gestion de projets et affectations
37+
- Suivi des missions par équipe
38+
39+
### 🏖️ Congés & Absences
40+
- Demandes de congés avec workflow
41+
- Soldes et historique
42+
- Vue calendrier des absences
43+
44+
### 🧠 Compétences
45+
- Matrice de compétences par employé
46+
- Niveaux et certifications
47+
- Matching compétences ↔ projets
48+
49+
### 📊 Analytics & Reporting
50+
- Dashboard avec KPIs
51+
- Graphiques interactifs (présence, charge, compétences)
52+
- Rapports exportables (PDF, Excel)
53+
- Analytics avancées
54+
55+
### ⚙️ Administration
56+
- Paramètres utilisateur personnalisables
57+
- Import de données (upload)
58+
- Configuration du planning
59+
- Notifications en temps réel (toasts)
60+
61+
---
62+
63+
## 📱 Pages
64+
65+
| Page | Description |
66+
|------|-------------|
67+
| **Dashboard** | Vue d'ensemble, KPIs, activité récente |
68+
| **Planning** | Planning visuel global |
69+
| **TeamPlanning** | Planning par équipe |
70+
| **Calendar** | Calendrier interactif |
71+
| **Teams** | Gestion des équipes |
72+
| **TeamDetails** | Détail d'une équipe |
73+
| **Employes** | Liste et fiches employés |
74+
| **Clients** | Référentiel clients |
75+
| **ClientDetails** | Détail client |
76+
| **Projets** | Gestion de projets |
77+
| **Conges** | Congés et absences |
78+
| **Competences** | Matrice de compétences |
79+
| **Rotation** | Rotation des affectations |
80+
| **Analytics** | Analytics avancées |
81+
| **Reports** | Rapports et export |
82+
| **Export** | Export PDF/Excel |
83+
| **Upload** | Import de données |
84+
| **Admin** | Administration |
85+
| **Settings** | Paramètres utilisateur |
86+
87+
---
88+
89+
## 🏗️ Architecture
90+
91+
Clean Architecture avec séparation Domain / Application / Infrastructure :
92+
93+
```
94+
TeamScheduler/
95+
├── Core/ # 🧠 Domain Layer
96+
│ ├── Entities/ # Employee, Team, Client, Project, Presence...
97+
│ ├── Enums/ # Status, types, niveaux
98+
│ └── Interfaces/ # Contrats repositories
99+
100+
├── Application/ # ⚙️ Application Layer
101+
│ ├── DTOs/ # Data Transfer Objects
102+
│ └── Services/ # TeamService
103+
104+
├── Infrastructure/ # 🔧 Infrastructure Layer
105+
│ └── Repositories/ # EF Core implementations
106+
107+
├── Data/ # 💾 Data Access
108+
│ ├── PlanningDbContext # EF Core DbContext
109+
│ ├── Configurations # Fluent API
110+
│ └── SeedTestData # Données de test
111+
112+
├── Services/ # 🔌 Business Services
113+
│ ├── PlanningService # Logique planning
114+
│ ├── SchedulerService # Planification automatique
115+
│ ├── TeamPlanningService # Planning par équipe
116+
│ ├── ReportService # Génération rapports
117+
│ ├── ExportService # Export PDF/Excel
118+
│ ├── NotificationService # Alertes temps réel
119+
│ └── ToastService # Notifications UI
120+
121+
├── Pages/ # 📱 21 pages Blazor
122+
├── Shared/ # 🧩 Composants partagés
123+
│ ├── MainLayout
124+
│ ├── EmployeeCard
125+
│ ├── ChartComponents
126+
│ ├── AdminNotifications
127+
│ └── Modals/
128+
129+
├── Web/ # 🌐 Composants avancés
130+
│ ├── Components/
131+
│ └── Pages/
132+
133+
├── Tests/ # ✅ Tests unitaires
134+
│ └── Unit/TeamServiceTests
135+
136+
└── Migrations/ # 📦 EF Core Migrations
137+
```
138+
139+
## Stack
140+
141+
| Composant | Technologie |
142+
|-----------|-------------|
143+
| **Framework** | .NET 8 Blazor Server |
144+
| **UI** | Bootstrap + composants custom |
145+
| **Database** | SQLite (dev) |
146+
| **ORM** | Entity Framework Core |
147+
| **Charts** | Composants Blazor interactifs |
148+
| **Export** | PDF + Excel |
149+
| **Tests** | xUnit |
150+
| **Container** | Docker |
151+
| **CI/CD** | GitHub Actions |
72152

73153
---
74154

75-
Pour toute contribution, suggestion ou bug, merci d’ouvrir une issue ou de contacter l’équipe.
155+
## 🚀 Quick Start
156+
157+
### Docker
158+
```bash
159+
docker-compose up --build
160+
```
161+
`http://localhost:5000`
162+
163+
### Manuel
164+
```bash
165+
dotnet restore
166+
dotnet run
167+
```
168+
169+
### Tests
170+
```bash
171+
dotnet test
172+
```
173+
174+
---
175+
176+
## Entités
177+
178+
| Entité | Description |
179+
|--------|-------------|
180+
| **Employee** | Nom, compétences, équipe, présence |
181+
| **Team** | Nom, membres, clients assignés, projets |
182+
| **Client** | Référentiel client, contacts |
183+
| **Project** | Projets avec équipes assignées |
184+
| **PresenceRecord** | Pointage quotidien |
185+
| **TeamClientAssignment** | Affectation équipe ↔ client |
186+
| **TeamProjectAssignment** | Affectation équipe ↔ projet |
187+
| **UserSettings** | Préférences utilisateur |
188+
189+
---
190+
191+
## Licence
192+
193+
MIT — [Khalil Benazzouz](https://github.com/khalilbenaz)

docker-compose.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
version: '3.8'
2+
services:
3+
app:
4+
build: .
5+
container_name: teamscheduler-app
6+
ports:
7+
- "5000:8080"
8+
environment:
9+
- ASPNETCORE_ENVIRONMENT=Development
10+
restart: unless-stopped

0 commit comments

Comments
 (0)