Le projet en une page
Ce que fait TimeManager
TimeManager est une application de pointage pour les employés d'une mairie (« City Hall » dans le sujet Epitech). Pointer, c'est dire à l'application « je commence ma journée » puis « je la termine ». Entre les deux, on peut prendre des pauses.
À partir de ces pointages, l'application calcule :
- le temps travaillé chaque jour et chaque semaine ;
- les heures supplémentaires au-delà de 35 h par semaine ;
- les oublis (une journée jamais terminée) ;
- les moyennes d'une équipe.
Les managers peuvent corriger les heures de leur équipe, valider les semaines et enregistrer les absences. Toutes les modifications sont tracées et visibles par la personne concernée.
Les trois rôles
| Rôle | En une phrase | Ce qu'il peut faire en plus |
|---|---|---|
| Employé | Il pointe et consulte ses heures. | Demander une correction, voir ses données, supprimer son compte. |
| Manager | Il pointe aussi, et gère une ou plusieurs équipes. | Voir et corriger les heures de ses membres, traiter leurs demandes, valider leurs semaines, enregistrer leurs absences, créer des équipes. |
| General manager (GM) | Le responsable de toute la mairie. | Tout ce que fait un manager, sur toutes les équipes, plus inviter des comptes, nommer ou retirer des managers, supprimer des comptes, changer son email. Son compte ne peut pas être supprimé. |
L'API décide, l'interface montre
Les droits sont vérifiés par l'API à chaque requête. Le web et le mobile se contentent de cacher ce qu'un rôle ne peut pas utiliser. Même si quelqu'un trafiquait l'application, le serveur refuserait.
Les règles qui reviennent partout
| Règle | Valeur |
|---|---|
| Objectif journalier | 7 h |
| Objectif hebdomadaire | 35 h (7 h × 5 jours) |
| Heures supplémentaires | Comptées à partir du moment où la semaine dépasse 35 h |
| Pointage oublié | Une période ouverte depuis plus de 14 h. Ses heures ne sont pas comptées. |
| Jour d'une période | Le jour où elle commence, même si elle finit après minuit |
| Travail de nuit | Le temps travaillé entre 21 h et 6 h |
| Absence | Un jour ouvré entier (congé, maladie, autre), sans motif. Baisse l'objectif de 7 h. |
| Heures | Stockées en UTC, au format AAAA-MM-JJ hh:mm:ss |
| Fuseau de référence | Europe/Paris |
Le détail complet est dans le cahier des charges : docs/specifications.md.
Les quatre parties techniques
| Partie | Technologie | Rôle |
|---|---|---|
| Frontend | Vue 3, Vite, Tailwind | Le site web, sur ordinateur et tablette |
| Backend | Elixir, Phoenix, PostgreSQL | L'API : toutes les données et toutes les règles |
| Mobile | Expo, React Native | L'application iOS et Android |
| DevOps | Ansible, Docker, Traefik, Jenkins | Les serveurs, la mise en ligne automatique |
Les adresses en production :
| Service | Adresse |
|---|---|
| Site web | time.jostud.com |
| API | api.time.jostud.com/api |
| Jenkins (CI/CD) | ci.time.jostud.com |
| Documentation | docs.time.jostud.com |