Назад към всички

freelance-toolkit-fr

// Boîte à outils pour freelances/indépendants en France : factures, time tracking, clients, dashboard.

$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly

Freelance Toolkit

Boîte à outils pour freelances/indépendants en France : factures, time tracking, clients, dashboard.

Scripts

Tous dans scripts/. Python 3 stdlib uniquement. Données dans ~/.freelance/.

config.py — Configuration prestataire

python3 config.py set --name "Hugo Dupont" --address "42 rue de la Paix, 75002 Paris" \
  --siret "98765432100010" --email "hugo@example.com" --phone "0600000000" \
  --iban "FR76 1234 5678 9012 3456 7890 123" --rate 80 --micro
python3 config.py show [--json]

Stockage : ~/.freelance/config.json

clients.py — Gestion clients

python3 clients.py add --name "Acme" --email "contact@acme.fr" --phone "0612345678" \
  --address "10 rue Example, 75001 Paris" --siret "12345678900010" --rate 80 --notes "Client fidèle"
python3 clients.py list [--json]
python3 clients.py show "Acme" [--json]
python3 clients.py edit "Acme" --rate 90 --notes "Nouveau taux"
python3 clients.py remove "Acme"

Stockage : ~/.freelance/clients.json

timetrack.py — Suivi du temps

python3 timetrack.py start "Site web Acme" [--client "Acme"]
python3 timetrack.py stop
python3 timetrack.py status [--json]
python3 timetrack.py log [--from 2026-01-01] [--to 2026-01-31] [--project "Site web"] [--json]
python3 timetrack.py report [--month 2026-01] [--json]

Stockage : ~/.freelance/timetrack.json

invoice.py — Génération de factures HTML

python3 invoice.py generate --client "Acme" --items "Dev site web:5:400" "Design logo:1:200" \
  [--number 2026-001] [--date 2026-02-15] [--due-days 30] [--no-open]
python3 invoice.py list [--json]
python3 invoice.py show 2026-001
python3 invoice.py paid 2026-001
  • Génère un HTML professionnel dans ~/.freelance/invoices/
  • Auto-numérotation YYYY-NNN si --number omis
  • Ouvre dans le navigateur par défaut (sauf --no-open)
  • Pré-remplit les infos client depuis clients.json si trouvé
  • Mentions légales françaises incluses (micro-entreprise par défaut)
  • paid marque une facture comme payée (suivi dans dashboard)
  • Montants au format français (2 900,00 €)
  • Initiales du prestataire comme logo sur la facture

dashboard.py — Tableau de bord revenus

python3 dashboard.py summary [--year 2026] [--json]
python3 dashboard.py monthly [--year 2026] [--json]
  • Agrège factures + time tracking
  • CA total, par mois, par client
  • Heures travaillées, jours ouvrés (heures/7), taux horaire effectif
  • Factures payées vs impayées
  • Taux effectif calculé sur les mois avec CA uniquement

Configuration

Fichier optionnel ~/.freelance/config.json :

{
  "provider": {
    "name": "Hugo Dupont",
    "address": "42 rue de la Paix, 75002 Paris",
    "siret": "98765432100010",
    "email": "hugo@example.com",
    "phone": "0600000000"
  },
  "default_rate": 80,
  "tva_rate": 0,
  "micro_entreprise": true,
  "payment_delay_days": 30,
  "payment_method": "Virement bancaire",
  "iban": "FR76 1234 5678 9012 3456 7890 123"
}

Si micro_entreprise: true → TVA = 0%, mention art. 293B du CGI. Si tva_rate > 0 → TVA calculée sur chaque facture.

Données

Tout dans ~/.freelance/ :

~/.freelance/
├── config.json          — Configuration prestataire
├── clients.json         — Base clients
├── timetrack.json       — Entrées de temps
└── invoices/
    ├── 2026-001.html    — Factures HTML
    ├── 2026-001.json    — Métadonnées facture
    └── ...

Notes

  • Montants en euros (€), output en français
  • --json disponible sur toutes les commandes pour usage machine
  • Les factures HTML sont optimisées pour impression / export PDF via navigateur
  • Voir references/french-law.md pour le détail des obligations légales