Files
2026-06-09 18:40:21 +02:00

4.4 KiB


title: Invio created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, accounting, dépenses, freelance, python, flask] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=Accounting, https://github.com/PythonicCoder/invio]

Invio 🧾

Outil léger de suivi de dépenses et de facturation minimaliste pour freelances, écrit en Python (Flask) — orienté saisie rapide et rapports mensuels.

Métadonnée Valeur
Site web https://github.com/PythonicCoder/invio
GitHub https://github.com/PythonicCoder/invio
License MIT
Langage Python (Flask) + SQLite/PostgreSQL
Étoiles 73
Dernière MAJ 2024-08
Catégorie cat-accounting

Description

Invio est une application web simple écrite en Python avec le micro-framework Flask, conçue pour aider les freelances et travailleurs indépendants à suivre leurs dépenses professionnelles et à générer des factures sans la complexité d'outils plus lourds comme app-invoice-ninja ou app-akaunting. Le parti pris est la simplicité radicale : une interface épurée, peu de menus, et un workflow centré sur la saisie quotidienne de dépenses (avec catégories, montants, dates et notes).

L'application permet de créer et de gérer des clients, d'enregistrer des dépenses (avec TVA, devise, justificatif textuel), puis de générer des factures PDF à partir des prestations ou dépenses accumulées. Des tableaux de bord mensuels/annuels restituent les totaux par catégorie et par client, ce qui aide à la déclaration URSSAF, à la facturation rétroactive et au suivi de trésorerie. L'export CSV des dépenses est supporté pour réimport dans un logiciel comptable (Sage, Indy, etc.).

Le projet se distingue par sa faible empreinte : SQLite suffit en mono-utilisateur, PostgreSQL est recommandé en multi-utilisateurs. L'absence de frontend JavaScript lourd le rend utilisable sur de petits serveurs (Raspberry Pi, VPS 1 Go de RAM). La roadmap communautaire inclut un module de devis et un scan OCR de tickets via Tesseract. Idéal pour un usage personnel ou une TPE de 1 à 3 personnes.

Installation

Via Docker (placeholder à adapter)

# docker-compose.yml
services:
  invio:
    image: ghcr.io/pythoniccoder/invio:latest
    container_name: invio
    restart: unless-stopped
    ports:
      - "5080:5000"
    environment:
      SECRET_KEY: changez-moi
      DATABASE_URL: sqlite:///data/invio.db
    volumes:
      - ./data:/app/data

Manuelle (Python ≥ 3.10)

git clone https://github.com/PythonicCoder/invio.git
cd invio
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
export FLASK_APP=invio.py
flask run --host 0.0.0.0 --port 5000

Configuration

Les principaux paramètres se règlent par variables d'environnement : SECRET_KEY (obligatoire, jeton aléatoire long), DATABASE_URL (chemin SQLite ou URL PostgreSQL postgresql://user:pwd@host/db), DEFAULT_CURRENCY (par défaut EUR), COMPANY_NAME (affiché sur les PDF). Le fichier config.py permet d'ajuster les modèles de facture (logo, mentions légales, taux de TVA par défaut).

Alternatives

Sécurité

  • Changer impérativement le SECRET_KEY par défaut avant toute exposition réseau
  • Mettre le service derrière un reverse proxy HTTPS (Traefik, Caddy, Nginx + Let's Encrypt) — voir recettes-docker-compose
  • Sauvegarder régulièrement le fichier SQLite ou le dump PostgreSQL
  • Activer les mises à jour automatiques de l'image (Watchtower ou Diun)
  • En multi-utilisateurs, créer un compte admin avec mot de passe long + 2FA si un reverse-proxy type Authelia est en place

Ressources

Pages Liées