Files
2026-04-28 19:51:14 +02:00

166 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```