166 lines
4.4 KiB
Markdown
166 lines
4.4 KiB
Markdown
# 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
|
||
```
|