Task Manager - Application de Gestion de Tâches Full-Stack
Introduction
Ce projet est une application de gestion de tâches, avec un backend API RESTful en Node.js/Express et un frontend SPA en Vue.js 3. L'ensemble est conteneurisé avec Docker, pour un déploiement simplifié en développement comme en production.
L'architecture sépare clairement l'API du frontend, communiquant entre eux via des appels REST.
Fonctionnalités clés
1. Assistant IA
- Génération automatique de listes de tâches structurées à partir d'un prompt en langage naturel.
2. Suivi du temps et rapports
- Imputation du temps passé sur chaque tâche, avec commentaires.
- Tableaux de bord détaillés : statistiques globales par tableau Kanban, rapports mensuels par utilisateur, tableaux paginés pour explorer chaque imputation.
3. Gestion de projet structurée
- Organisation par produits : regroupement des tableaux Kanban pour les équipes gérant plusieurs flux de travail.
- Tableaux Kanban personnalisables : colonnes (étapes) entièrement configurables pour s'adapter à n'importe quel workflow.
4. Collaboration et partage
- Espace de discussion : fil de commentaires intégré à chaque tâche.
- Partage par QR code : génération d'un QR code unique par tableau Kanban.
5. Utilisateurs et sécurité
- Authentification sécurisée via JSON Web Tokens (JWT) avec refresh tokens.
- Rôles et permissions pour la gestion des accès.
- Panel d'administration : interface AdminJS pour la gestion des données.
Architecture
L'API RESTful Node.js/Express expose les tableaux Kanban, tâches, imputations de temps et rapports ; Sequelize fait l'interface avec la base MySQL côté serveur. Le frontend SPA Vue.js 3 consomme cette API via Axios, avec Pinia pour centraliser l'état côté client et Vue Router pour la navigation. En production, Traefik agit comme reverse proxy devant les deux services et gère automatiquement les certificats SSL/TLS.
Stack technique
Frontend
- Vue.js 3 (API Composition)
- Vite comme bundler
- Pinia pour la gestion d'état
- Vue Router pour les routes côté client
- Tailwind CSS et Sass
- Axios pour les requêtes HTTP
Backend
- Node.js avec Express.js
- Sequelize comme ORM vers MySQL
- JWT (jsonwebtoken) pour l'authentification
- AdminJS pour le panel d'administration
Infrastructure & DevOps
- Docker et Docker Compose pour l'ensemble des services (backend, frontend, base de données)
- Traefik comme reverse proxy en production, avec gestion automatique des certificats SSL/TLS
- Environnements de développement et de production distincts
- ESLint et Prettier, Vitest pour les tests unitaires
Défis techniques relevés
- Authentification JWT sécurisée : mise en place d'un système avec refresh tokens.
- Pipeline de déploiement : construction d'un déploiement reproductible avec Docker et Traefik.
Conclusion
Ce projet couvre l'ensemble d'une application full-stack, de la conception de l'API à l'intégration du frontend, avec une attention particulière portée à l'authentification et à un déploiement robuste en production.
Technologies Utilisées
MySQL
Tailwind CSS
Vue.js