|
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 | +[](https://github.com/khalilbenaz/TeamScheduler/actions/workflows/ci.yml) |
| 8 | +[](https://dotnet.microsoft.com) |
| 9 | +[](https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor) |
| 10 | +[](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 | |
72 | 152 |
|
73 | 153 | --- |
74 | 154 |
|
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) |
0 commit comments