# EquiTask **Progressive Web App de mesure de la répartition des tâches domestiques dans un foyer.** Mesurez et visualisez objectivement qui fait quoi à la maison via un système de scoring combinant temps passé et pénibilité. --- ## Fonctionnalités - 📱 **PWA installable** — fonctionne sur mobile et desktop - 📵 **Mode offline** — saisie sans connexion, synchronisation automatique au retour - 👥 **Multi-membres** — jusqu'à 7 personnes (2 adultes + 5 enfants) - 📊 **Dashboard complet** — scores, répartition par catégorie, évolution temporelle, indicateur d'équilibre - 📋 **Catalogue de tâches** — 30 tâches récurrentes prédéfinies + tâches ponctuelles - 🔧 **Administration** — CRUD complet membres, catégories, tâches - ↓ **Export** — CSV (Excel/Sheets) ou JSON --- ## Stack technique | Couche | Technologie | |--------|-------------| | Frontend | React 18 + Vite 5 + TypeScript + Tailwind CSS | | Graphiques | Recharts | | PWA | vite-plugin-pwa + Workbox | | Offline | IndexedDB (idb) | | Backend | Node.js + Express + TypeScript | | Base de données | SQLite + Drizzle ORM | | Déploiement | Docker (single container) | --- ## Installation et développement ### Prérequis - Node.js 20+ - npm 9+ ### Démarrage en développement ```bash # 1. Installer les dépendances backend cd backend npm install # 2. Démarrer le backend (port 3001) npm run dev ``` Dans un second terminal : ```bash # 3. Installer les dépendances frontend cd frontend npm install # 4. Démarrer le frontend (port 5173, proxy vers 3001) npm run dev ``` L'application est accessible sur **http://localhost:5173** ### Build de production ```bash # Builder le frontend cd frontend && npm run build # Le build est dans frontend/dist/ # Copier dans backend/public/ pour le servir via Express cp -r frontend/dist/* backend/public/ # Builder et démarrer le backend cd backend npm run build npm start ``` --- ## Déploiement avec Docker ### Build et démarrage local ```bash docker-compose up --build ``` Application accessible sur **http://localhost:3001** ### Déploiement sur Coolify (VPS) L'application est configurée pour être déployée automatiquement via Coolify : 1. Pousser le code sur Gitea : `git.domench.fr` 2. Coolify détecte le `Dockerfile` et build l'image 3. Le container est déployé sur `equitask.domench.fr` avec HTTPS via Traefik 4. La base SQLite est persistée dans un volume Docker **Variables d'environnement Coolify :** ``` NODE_ENV=production PORT=3001 DATABASE_PATH=/data/equitask.db ``` **Volume à créer dans Coolify :** - Container path : `/data` - Host path : (géré par Coolify) --- ## Modèle de données ``` foyer → 1 seul enregistrement membres → jusqu'à 7 (2 adultes + 5 enfants) categories → 7 par défaut, éditables taches_rec. → catalogue de tâches récurrentes saisies → historique de toutes les tâches effectuées ``` **Formule de score :** `score = durée (min) × coefficient pénibilité (1-5)` --- ## Catégories et tâches par défaut | Catégorie | Tâches incluses | |-----------|----------------| | 🍳 Cuisine | Préparation repas, Vaisselle, Batch cooking… | | 🧹 Ménage | Aspiration, Salle de bain, Lessive, Repassage… | | 🛒 Courses | Courses alimentaires, Gestion liste… | | 👶 Enfants | Bain, Devoirs, Activités, Cartable… | | 📋 Administratif | RDV médicaux, Papiers, Impôts… | | 🔧 Entretien maison | Bricolage, Jardinage, Vitres… | | 🧠 Charge mentale | Planification, Scolarité, Santé famille… | --- ## Structure du projet ``` equitask/ ├── backend/ │ ├── src/ │ │ ├── db/ # Schéma, seed, connexion SQLite │ │ ├── routes/ # API REST (foyer, membres, categories, taches, saisies) │ │ └── index.ts # Serveur Express │ └── package.json ├── frontend/ │ ├── src/ │ │ ├── pages/ # SelectionProfil, Saisie, Dashboard, Parametres │ │ ├── components/ # UI, saisie, dashboard, settings │ │ ├── api/ # Clients REST │ │ ├── offline/ # Queue IndexedDB │ │ ├── context/ # AppContext (membre actif, online status) │ │ └── hooks/ # useOfflineSync, useToast │ └── package.json ├── Dockerfile ├── docker-compose.yml └── README.md ```