Application web de journal numérique pour la Thérapie Cognitive Comportementale (TCC).
Avertissement Médical
Cette application n'est PAS un outil médical. Elle sert uniquement de carnet numérique pour aider les patients à suivre leurs pensées, émotions et comportements dans le cadre d'un programme TCC sous supervision professionnelle.
- Sommeil : Cycles de sommeil avec historique visuel.
- Activités : Journal par plage horaire avec scores plaisir/maîtrise/satisfaction.
- Humeur : Évaluation quotidienne (0-10).
- Consommables : Tracking personnalisable (exercice, caféine, médicaments...).
- Analyse structurée des pensées automatiques.
- Documentation : situations, émotions, pensées, comportements, conséquences.
- Graphiques d'évolution (sommeil, humeur).
- Top activités par score de plaisir.
- Statistiques hebdomadaires.
- Mode sombre/clair.
- 5 thèmes de couleurs.
- Design responsive mobile-first.
- Animations fluides.
- Notifications navigateur programmables.
- Auto-sauvegarde temps réel + mode hors ligne.
- Export PDF personnalisable.
- Import/Export JSON.
- Multi-utilisateurs avec gestion admin.
- Python 3.8+
- Node.js 18+ (pour le build frontend)
# 1. Cloner le repository
git clone https://github.com/breaching/moodix.git
cd moodix
# 2. Installer les dépendances Backend
pip install -r requirements.txt
# 3. Installer les dépendances Frontend (optionnel, le dossier `dist/` est déjà pré-compilé)
npm install
npm run build
# 4. Lancer le serveur
python serv.pyL'application est maintenant accessible à l'adresse http://localhost:5000.
Identifiants par défaut : admin / admin
IMPORTANT : Changez le mot de passe immédiatement !
Pour modifier le mot de passe, exécutez le script hash_password.py et copiez le hash généré dans votre fichier .env.
python hash_password.py VotreMotDePasseFort
# Copiez le hash obtenuCréez un fichier .env à la racine du projet (vous pouvez copier/coller depuis .env.example).
FLASK_ENV=production
APP_USERNAME=votre_username
APP_PASSWORD_HASH=<collez_le_hash_genere_ici>
SECRET_KEY=<cle_aleatoire_de_64_caracteres>Pour générer une SECRET_KEY sécurisée :
python -c "import secrets; print(secrets.token_hex(32))"moodix/
├── src/ # Code source React/TypeScript
│ ├── components/ # Composants React
│ ├── stores/ # Stores Zustand
│ ├── api/ # Client API
│ └── utils/ # Utilitaires
├── dist/ # Build frontend (généré)
├── serv.py # Serveur Flask
├── requirements.txt # Dépendances Python
├── package.json # Dépendances Node.js
├── .env.example # Template de configuration
├── hash_password.py # Générateur de hash
├── start.bat # Script de démarrage Windows
└── start.sh # Script de démarrage Linux/Mac
- Backend : Flask, SQLAlchemy, bcrypt
- Frontend : React 18, TypeScript, Tailwind CSS, Zustand
- Base de données : SQLite
- Outil de build : Vite
Il est recommandé d'utiliser un serveur WSGI approprié comme Gunicorn ou Waitress.
Linux/Mac (Gunicorn) :
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 serv:appWindows (Waitress) :
pip install waitress
waitress-serve --port=5000 serv:appL'utilisation d'un reverse proxy comme Nginx est conseillée pour gérer le HTTPS, servir les fichiers statiques et ajouter une couche de sécurité.
server {
listen 443 ssl http2;
server_name votre-domaine.com;
# Configuration SSL (ex: avec Let's Encrypt)
ssl_certificate /etc/letsencrypt/live/votre-domaine.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/votre-domaine.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Fonctionnalités implémentées :
- Limitation de tentatives de connexion (rate limiting)
- Validation des entrées
- Protection CSRF
- Cookies de session sécurisés
- Protection contre l'injection SQL (via l'ORM)
- Hachage des mots de passe (bcrypt)
À configurer par l'administrateur :
- HTTPS/SSL (ex: via Let's Encrypt)
- Règles de pare-feu
- Sauvegardes automatisées
Ce projet est sous licence MIT. Consultez le fichier LICENSE pour plus de détails.


