{"id":18516588,"url":"https://github.com/worketyamo-students/barthez_blog_api_v3","last_synced_at":"2026-01-28T02:06:26.428Z","repository":{"id":261430748,"uuid":"883622722","full_name":"Worketyamo-Students/Barthez_Blog_API_V3","owner":"Worketyamo-Students","description":"L'entreprise WORKETYAMO a remarqué une perte significative de productivité et une augmentation des coups liées qux heures d'abscences non justifiés des employés. Pour remedier à cette situation, la direction souhaite mettre en place un systeme automatisé pour suivre la présence des employés, calculé les heures d'abscences et ajusté les salaires. ","archived":false,"fork":false,"pushed_at":"2024-11-19T17:17:14.000Z","size":431,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-22T20:11:54.072Z","etag":null,"topics":["aws-s3","bcrypt","cronjob","docker","ejs-templates","express-js","express-middleware","jwt","minio","mongodb","nodejs","nodemailer","otp-verification","postman","prisma-orm","rate-limiting","rest-api","swagger-ui","typescript","winston-logger"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/Worketyamo-Students.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","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}},"created_at":"2024-11-05T09:42:22.000Z","updated_at":"2024-11-19T17:17:17.000Z","dependencies_parsed_at":"2024-12-25T22:31:58.830Z","dependency_job_id":null,"html_url":"https://github.com/Worketyamo-Students/Barthez_Blog_API_V3","commit_stats":{"total_commits":27,"total_committers":2,"mean_commits":13.5,"dds":0.03703703703703709,"last_synced_commit":"9e971a965d75127903ecd8e9c061b6560b32479e"},"previous_names":["worketyamo-students/barthez_blog_api_v3"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Worketyamo-Students%2FBarthez_Blog_API_V3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Worketyamo-Students%2FBarthez_Blog_API_V3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Worketyamo-Students%2FBarthez_Blog_API_V3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Worketyamo-Students%2FBarthez_Blog_API_V3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Worketyamo-Students","download_url":"https://codeload.github.com/Worketyamo-Students/Barthez_Blog_API_V3/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250316057,"owners_count":21410476,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["aws-s3","bcrypt","cronjob","docker","ejs-templates","express-js","express-middleware","jwt","minio","mongodb","nodejs","nodemailer","otp-verification","postman","prisma-orm","rate-limiting","rest-api","swagger-ui","typescript","winston-logger"],"created_at":"2024-11-06T16:03:11.072Z","updated_at":"2026-01-28T02:06:26.400Z","avatar_url":"https://github.com/Worketyamo-Students.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# WorketYamo Employee Management System\n\n📋 L'entreprise WORKETYAMO a remarqué une perte significative de productivité et une augmentation des coups liées qux heures d'abscences non justifiées de ses employés. Pour remedier à cette situation, la direction souhaite mettre en place un systeme automatisé pour suivre la présence des employés, calculé les heures d'abscences et ajusté les salaires.\n\n🌟 **WorketYamo Employee Management System** est une solution complète de gestion des ressources humaines conçue pour moderniser et optimiser les processus RH des entreprises de toutes tailles. Ce systeme est conçu pour optimiser le *suivi des présences*, la *gestion des absences* et le *calcul des salaires* en fonctions des abscences. Ce système automatisé et sécurisé aideras donc à améliorer la productivité et à réduire les coûts liés aux absences non justifiées.\n\n## 📚 Table de matière\n\n- [WorketYamo Employee Management System](#worketyamo-employee-management-system)\n  - [📚 Table de matière](#-table-de-matière)\n  - [▶️ Scénario de fonctionnement](#️-scénario-de-fonctionnement)\n  - [🚀 Fonctionnalités Principales](#-fonctionnalités-principales)\n      - [👥 Gestion des employés](#-gestion-des-employés)\n      - [🔐 Authentification \\\u0026 Sécurité](#-authentification--sécurité)\n      - [⏰ Gestion des Présences](#-gestion-des-présences)\n      - [📊 Gestion des Absences](#-gestion-des-absences)\n      - [💰 Gestion des Salaires](#-gestion-des-salaires)\n      - [📧 Notifications](#-notifications)\n  - [🛠 Technologies Utilisées](#-technologies-utilisées)\n  - [⚙️ Configurations et Installation](#️-configurations-et-installation)\n    - [Prérequis](#prérequis)\n    - [🏁 Installation Rapide](#-installation-rapide)\n    - [principale commande](#principale-commande)\n  - [📡 Reference Documentation](#-reference-documentation)\n  - [🧪 Tests](#-tests)\n  - [🚢 Déploiement](#-déploiement)\n  - [📚 Contribution](#-contribution)\n  - [🗓 Feuille de route](#-feuille-de-route)\n  - [📄 Licence](#-licence)\n  - [📞 Support](#-support)\n  - [🤝 Remerciements](#-remerciements)\n\n## ▶️ Scénario de fonctionnement\n\nQuotidiennement, les employés arrivent à leur heure de travail voulu, Ils, se connectent 🖥️  et ils signent numériquement leur arrivé. Au moment de quitter le lieu de travail, ils se connectent et signent leur heure de départ.\n\nla signature de l'heure de retour ne peut etre effectué si la signature de l'heure d'arrivé n'a pas été fait.\n\nsi la signature de retour n'a pas été fais ou si aucune signature n'a été fais dans la journée par un quelconque employée, il reçois le nombre maximum d'heure d'abscence de la journée (ici 8H d'abscence)\n\nA la fin du mois le salaire est calculé en fonction de la somme des heures d'abscences cumulés durant le mois.\n\n## 🚀 Fonctionnalités Principales\n\n#### 👥 Gestion des employés\n\n- Inscription sécurisée avec validation OTP par email\n- Système de role (*Admin/users*) avec permission différencié\n- Mise a jours, modifications et suppresions des profiles\n- Gestion sécurisé des profiles avec upload d'images (AWS S3/ MiniO)\n\n#### 🔐 Authentification \u0026 Sécurité\n\n- Authentification JWT (*system d'access token + Refresh token*)\n- Blacklisting des tokens pour renforcer la Sécurité par les token\n- Hashage et sauvegarde sécurisé des mots de passes\n- Gestion des sessions avec déconnexion automatique\n- Robuste protection contre les attaques courantes (*XSS*, *CSRF*, *Rate Limiting*, *Injections SQL*...)  \n\n#### ⏰ Gestion des Présences\n\n- Enregistrement automatique des heures d'arrivée\n- Validation des heures de sortie\n- Calcul intelligent des retards\n- Système de grâce pour cas exceptionnels\n- Historique complet des présences\n\n#### 📊 Gestion des Absences\n\n- Calcul automatique des heures d'absence\n- Différenciation entre retards et absences\n- Système de justification d'absences\n- Rapports détaillés par employé\n\n#### 💰 Gestion des Salaires\n\n- Calcul automatique basé sur les heures travaillées\n- Ajustement en fonction des absences\n- Plancher salarial minimal garanti\n- Notifications automatiques de salaire\n- Historique des ajustements salariaux\n\n#### 📧 Notifications\n\n- Emails de bienvenue avec OTP\n- Notifications de changement de salaire\n- Alertes d'absences répétées\n- Rappels importants\n\n## 🛠 Technologies Utilisées\n\n- **Backend**: Node.js, Express.js, TypeScript\n- **Base de données**: MongoDB avec Prisma ORM\n- **Authentification**: JWT, bcrypt\n- **Stockage**: AWS S3/MinIO pour les fichiers\n- **Emails**: Nodemailer avec templates EJS\n- **Logging**: Winston avec rotation des logs\n- **Documentation**: Swagger/OpenAPI\n- **Sécurité**: Helmet, Express-rate-limit, XSS-clean\n- **conténeurasisation**: docker\n\n## ⚙️ Configurations et Installation\n\n### Prérequis\n\n- Node.js (\u003e= 20.12.0)\n- Yarn (\u003e= 1.22.19)\n- Une base de donnéeMongoDB\n- MinIO ou stockage compatible AWS S3\n- Un serveur SMTP pour l'envoi d'emails\n\n### 🏁 Installation Rapide\n\n```bash\n    #cloner le repos\n    git clone https://github.com/01Barthez/Manage-Employee.git\n\n    #changer de repertoire pour le repertoire cloner\n    cd Manage-Employee\n\n\n    #Installer les dépendances\n    yarn Installation\n\n    # Generer le client prisma\n    yarn generate\n\n    # Faire pousser les models vers le depot distant\n    yarn push\n\n    #Lancer le serveur de developpement\n    yarn dev\n```\n\n### principale commande\n\n- **yarn dev** : Démarre le serveur de développement\n- **yarn build** : Compile le projet pour la production\n- **yarn start** : Démarre le serveur de production\n- **yarn generate** : Génère le client Prisma\n- **yarn push** : Applique les changements du schéma à la base de données\n\n## 📡 Reference Documentation\n\nLa Documentation complète de l'API est disponible via Swagger UI à  l'addresse:\n\n```bash\nhttp://localhost:3000/api-docs # Swagger Docs\n\n```\n\nEndpoinds principaux:\n\n- *'/employees'* : Gestion des employés (CRUD)\n- *'/attendance'* : Enregistrement des présences\n- *'/absence'* : Gestion des absences\n\n## 🧪 Tests\n\n(*Pas encore de tests pour le moment, mais c'est prévus...*)\n\n## 🚢 Déploiement\n\nL'application peut etre déployé par docker\n\n## 📚 Contribution\n\nLes contributions sont les bienvenues ! Veuillez suivre ces étapes :\n\n- Forkez le projet\n- Créez votre branche de fonctionnalité (git checkout -b feature/AmazingFeature)\n- Committez vos changements (git commit -m 'Add some AmazingFeature')\n- Poussez vers la branche (git push origin feature/AmazingFeature)\n- Ouvrez une Pull Request\n\npour plus de détails, voir le fichier CONTRIBUTING\n\n## 🗓 Feuille de route\n\n- stockage des données relatives au salaire dans un document externe xcv\n- Integration de l'OAuth2.0\n- Intégration avec des systèmes de pointage biométriques\n- Gestion des pauses et heures supplémentaires\n- Module de planification des congés\n- Tableau de bord analytique avancé\n- Application mobile pour les employés\n\n## 📄 Licence\n\nCe projet est sous [**licence MIT**](https://choosealicense.com/licenses/mit/). Voir le fichier LICENSE pour plus de détails.\n\n## 📞 Support\n\nPour toute question ou assistance :\n\n- 📧 Email : [**kenwoubarthez@gmail.com**](https://mailto:kenwoubarthez@gmail.com)\n- 💬 LinkedIn : [**Barthez Kenwou**](https://cm.linkedin.com/in/barthez-kenwou)\n- 📱 Téléphone : **+237 655 646 688**\n\n## 🤝 Remerciements\n\n- La grande **Équipe WorkEtYamo** pour la formation le soutien et l'accompagnement\n- Communauté open-source Express.js et Prisma\n- Tous les contributeurs et utilisateurs du projet\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworketyamo-students%2Fbarthez_blog_api_v3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fworketyamo-students%2Fbarthez_blog_api_v3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fworketyamo-students%2Fbarthez_blog_api_v3/lists"}