activity-tracker/README.md
Muyue f113ad6721 Initial commit - Activity Tracker MVP
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>
2025-10-16 09:05:39 +02:00

8.0 KiB

Activity Tracker MVP

Version License Rust

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

  1. Mot de passe fort : Minimum 16 caractères, mélange de lettres/chiffres/symboles
  2. Ne pas stocker le mot de passe : Saisie manuelle à chaque commande
  3. 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.