deploy: equitask — 2026-04-28 19:51:14

This commit is contained in:
deploy.py
2026-04-28 19:51:14 +02:00
commit 53532f7f59
47 changed files with 4093 additions and 0 deletions
+165
View File
@@ -0,0 +1,165 @@
# 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
```