Dashboard Laravel pour suivre la productivite (Toggl), avec vue mensuelle/annuelle, heatmap, comparatifs et records.
- PHP 8.2+
- Laravel 12
- SQLite (par defaut) ou MySQL
- Tailwind/Blade
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
npm install
npm run build
php artisan serveConfigurer au minimum dans .env:
TOGGL_API_TOKEN=...
TOGGL_WORKSPACE_ID=...Options utiles:
TOGGL_DAILY_GOAL_HOURS=8
TOGGL_CACHE_TTL_MINUTES=10
TOGGL_SYNC_TTL_MINUTES=240
TOGGL_HISTORY_YEARS=5
TOGGL_WARMUP_DAILY_DAYS=120
# Scheduler warmup:
# - hourly: lance toutes les heures (minute issue de TOGGL_WARMUP_SCHEDULE_TIME)
# - daily: lance une fois par jour a l'heure de TOGGL_WARMUP_SCHEDULE_TIME
TOGGL_WARMUP_SCHEDULE=hourly
TOGGL_WARMUP_SCHEDULE_TIME=03:10/redirige vers/cockpit/productivity/cockpit/productivitydashboard principal
Commande:
php artisan toggl:warmupImport CSV TimeFlip (journalier):
php artisan timeflip:import /chemin/vers/timeflip_export.csv --dry-run
php artisan timeflip:import /chemin/vers/timeflip_export.csv --conflict=replace
php artisan timeflip:import /chemin/vers/timeflip_export.csv --conflict=merge--conflict=skip(defaut): conserve les snapshots journaliers existants.--conflict=replace: remplace les snapshots journaliers existants sur la plage importee.--conflict=merge: ajoute TimeFlip aux jours existants (idempotent pour TimeFlip grace amanual_imports.timeflip_csv.secondspar jour).
Matching client (V2):
- Configurable dans
config/toggl.php(client_matching). - Utilise des regles
project_exact,project_contains,project_regex. - Par defaut, les regles s'appliquent seulement quand Toggl retourne un client vide (
Sans client).
Scheduler Laravel:
php artisan schedule:workphp artisan testLes tests feature mockent TogglService pour eviter la dependance reseau.
app/Http/Controllers/Cockpit/ProductivityDashboardController.phpapp/Services/TogglService.phpresources/views/cockpit/productivity.blade.phpresources/views/cockpit/partials/*