Implémentation complète du MVP (Minimum Viable Product) : ✅ Module de capture : - Screenshots avec compression WebP (qualité 80%) - Métadonnées des fenêtres actives - Détection d'inactivité (pause après 10min) ✅ Module de stockage : - Base SQLite avec schéma optimisé - Chiffrement AES-256-GCM des données sensibles - Dérivation de clé PBKDF2-HMAC-SHA512 (100k itérations) - Nettoyage automatique après 30 jours ✅ Module d'analyse IA : - Classification heuristique en 5 catégories - Extraction d'entités (projet, outil, langage) - Patterns optimisés pour Development, Meeting, Research, Design ✅ Module de rapport : - Génération de rapports JSON - Timeline d'activités avec statistiques - Export chiffré des données ✅ CLI complète : - activity-tracker start : capture en arrière-plan - activity-tracker report : génération de rapport - activity-tracker stats : statistiques de stockage - activity-tracker cleanup : nettoyage des données - activity-tracker export : export complet 📚 Documentation : - README complet avec exemples d'utilisation - Configuration via settings.toml - Tests unitaires pour chaque module 🔒 Sécurité : - Chiffrement end-to-end des screenshots - Pas de stockage du mot de passe - Protection RGPD avec consentement explicite Conformité avec le design-journal.md pour le MVP. 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
8.0 KiB
Activity Tracker MVP
Activity Tracker est un système de suivi d'activité conçu pour aider les utilisateurs à reconstruire leur historique de travail via une analyse automatisée des actions numériques.
📋 Caractéristiques (MVP)
- ✅ Capture passive : Screenshots toutes les 5 minutes + métadonnées fenêtres
- ✅ Stockage sécurisé : Base SQLite avec chiffrement AES-256-GCM
- ✅ Analyse intelligente : Classification automatique en 5 catégories
- ✅ Rapports journaliers : Export JSON avec statistiques détaillées
- ✅ Privacy-first : Toutes les données sont chiffrées localement
🚀 Installation
Prérequis
- Rust 1.70+
- Cargo
- SQLite3
Compilation
git clone https://github.com/yourorg/activity-tracker.git
cd activity-tracker
cargo build --release
Le binaire compilé sera disponible dans target/release/activity-tracker.
Installation système
# Linux/macOS
sudo cp target/release/activity-tracker /usr/local/bin/
# Ou ajoutez le chemin à votre PATH
export PATH=$PATH:$(pwd)/target/release
📖 Utilisation
1. Démarrer la capture d'activité
# Lancer avec mot de passe pour chiffrement
activity-tracker start --password "votre_mot_de_passe_sécurisé"
# Avec intervalle personnalisé (en secondes, défaut: 300 = 5 min)
activity-tracker start --password "..." --interval 600
Note : Le processus s'exécute en boucle jusqu'à interruption (Ctrl+C).
2. Générer un rapport
# Rapport du jour (par défaut)
activity-tracker report --password "..." --output rapport_aujourdhui.json
# Rapport des 7 derniers jours
activity-tracker report --password "..." --days 7 --output rapport_semaine.json
3. Consulter les statistiques
activity-tracker stats --password "..."
Affiche :
- Nombre total de captures
- Taille de la base de données
- Répartition par catégorie
- Date de la première/dernière capture
4. Nettoyer les anciennes données
# Supprimer les données de plus de 30 jours (par défaut)
activity-tracker cleanup --password "..." --days 30
5. Exporter toutes les données
# Export complet (365 derniers jours)
activity-tracker export --password "..." --output backup.json
🔒 Sécurité
Chiffrement
- Algorithme : AES-256-GCM (authentification + chiffrement)
- Dérivation de clé : PBKDF2-HMAC-SHA512 (100 000 itérations)
- Salt : Généré aléatoirement pour chaque session
- Nonce : 12 bytes GCM (généré aléatoirement par capture)
Bonnes pratiques
- Mot de passe fort : Minimum 16 caractères, mélange de lettres/chiffres/symboles
- Ne pas stocker le mot de passe : Saisie manuelle à chaque commande
- Sauvegarde sécurisée : Chiffrez les exports JSON avant de les stocker ailleurs
📊 Format de rapport (JSON)
{
"metadata": {
"version": "1.0.0",
"user_id": "default_user",
"period": {
"start": "2025-10-16T00:00:00Z",
"end": "2025-10-17T00:00:00Z"
}
},
"activities": [
{
"id": "capture_1697456789000",
"start": "2025-10-16T09:00:00Z",
"end": "2025-10-16T09:05:00Z",
"category": "Development",
"entities": {
"project": "activity-tracker",
"tools": ["vscode"],
"languages": ["Rust"]
},
"confidence": 0.92
}
],
"stats": {
"total_time_formatted": "8h 30m",
"activity_count": 102,
"by_category": {
"Development": {
"time_formatted": "4h 30m",
"percentage": 52.9
},
"Meeting": { ... },
...
}
}
}
🎯 Catégories d'activités
Le MVP classifie automatiquement les activités en 5 catégories :
| Catégorie | Exemples d'applications |
|---|---|
| Development | VSCode, IntelliJ, Terminal, GitHub |
| Meeting | Zoom, Teams, Google Meet, Slack Call |
| Research | Chrome, Firefox, StackOverflow, Documentation |
| Design | Figma, Sketch, Photoshop, Illustrator |
| Other | Toute autre activité non classifiée |
⚙️ Configuration
Créez un fichier config/settings.toml :
[capture]
interval_seconds = 300 # 5 minutes
screenshot_quality = 80 # Qualité WebP (0-100)
inactivity_threshold = 600 # 10 minutes
[storage]
max_storage_mb = 500
retention_days = 30
db_path = "data/activity_tracker.db"
[ai]
categories = ["Development", "Meeting", "Research", "Design", "Other"]
batch_size = 10
confidence_threshold = 0.7
[security]
salt_length = 16
pbkdf2_iterations = 100000
encryption_algorithm = "AES-256-GCM"
Puis lancez :
activity-tracker start --password "..." --config config/settings.toml
🧪 Tests
# Tests unitaires
cargo test
# Tests avec couverture
cargo test --coverage
# Tests d'intégration
cargo test --test integration_tests
📁 Structure du projet
activity-tracker/
├── src/
│ ├── capture/ # Module de capture (screenshots + métadonnées)
│ │ ├── mod.rs
│ │ ├── screenshot.rs
│ │ ├── window.rs
│ │ └── activity.rs
│ ├── storage/ # Module de stockage (SQLite + chiffrement)
│ │ ├── mod.rs
│ │ ├── database.rs
│ │ ├── encryption.rs
│ │ └── schema.rs
│ ├── analysis/ # Module d'analyse IA
│ │ ├── mod.rs
│ │ ├── classifier.rs
│ │ └── entities.rs
│ ├── report/ # Module de génération de rapports
│ │ ├── mod.rs
│ │ ├── generator.rs
│ │ ├── timeline.rs
│ │ └── export.rs
│ ├── config.rs # Configuration
│ ├── error.rs # Gestion des erreurs
│ ├── lib.rs # Bibliothèque principale
│ └── main.rs # Point d'entrée CLI
├── config/ # Fichiers de configuration
├── data/ # Base de données locale
├── tests/ # Tests d'intégration
├── Cargo.toml # Dépendances Rust
└── README.md
🛠️ Développement
Ajouter une nouvelle catégorie
Modifiez src/analysis/mod.rs :
pub enum ActivityCategory {
Development,
Meeting,
Research,
Design,
Communication, // Nouvelle catégorie
Other,
}
Puis ajoutez les patterns dans src/analysis/classifier.rs.
Améliorer la classification
Les patterns sont définis dans classifier.rs. Ajoutez vos propres règles :
Pattern::new(vec!["slack", "discord", "telegram"], 0.9),
📈 Roadmap Post-MVP
- Keylogging optionnel (avec consentement explicite RGPD)
- Synchronisation cloud chiffrée E2E
- Plugins sécurisés (sandbox WASM)
- Intégration Mistral 7B pour analyse avancée
- Interface Electron pour visualisation
- Détection audio de réunions
- Intégrations (Trello, Jira, calendriers)
🐛 Problèmes connus
- Linux : L'accès aux métadonnées de fenêtres nécessite X11 (Wayland non supporté)
- macOS : Nécessite autorisations Accessibilité (voir documentation officielle)
- Windows : Fonctionne avec les privilèges standards
🤝 Contribution
Les contributions sont les bienvenues ! Consultez CONTRIBUTING.md pour les guidelines.
📄 Licence
MIT License - voir LICENSE pour plus de détails.
👥 Auteurs
- Activity Tracker Team - GitHub
🙏 Remerciements
- Design inspiré du document
design-journal.md - Chiffrement via RustCrypto
- Screenshots via xcap
Note : Ce projet est un MVP (Minimum Viable Product). Les fonctionnalités avancées (IA complète, plugins, sync cloud) sont prévues pour les versions futures.