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
--numberomis - Ouvre dans le navigateur par défaut (sauf
--no-open) - Pré-remplit les infos client depuis
clients.jsonsi trouvé - Mentions légales françaises incluses (micro-entreprise par défaut)
paidmarque 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
--jsondisponible sur toutes les commandes pour usage machine- Les factures HTML sont optimisées pour impression / export PDF via navigateur
- Voir
references/french-law.mdpour le détail des obligations légales