Augustin 9c46beb11c Improve .gitignore: add Claude Code and enhance coverage
- Add .claude/ directory (Claude Code files)
- Add *.local.json for local configuration files
- Improve database patterns (data/ directory, *.sqlite variants)
- Add OS-specific files (Windows: desktop.ini, *.lnk; Linux: .directory)
- Refine JSON patterns to avoid ignoring all JSON files
- Add reports/ and exports/ directories
- Add *.bak backup files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 13:39:02 +02:00

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://gitea.legion-muyue.fr/Muyue/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 - Gitea

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.

Description
No description provided
Readme 170 KiB
Languages
Rust 89.2%
JavaScript 5.8%
HTML 5%