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

4.6 KiB


title: Invoicerr created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, accounting, facturation, freelance, typescript, nestjs] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=Accounting, https://github.com/n0xgg04/invoicerr]

Invoicerr 📨

Facturation simple et moderne pour freelances et auto-entrepreneurs, écrite en TypeScript (backend NestJS, frontend Next.js) — focus sur la clarté et l'export PDF rapide.

Métadonnée Valeur
Site web https://github.com/n0xgg04/invoicerr
GitHub https://github.com/n0xgg04/invoicerr
License MIT
Langage TypeScript (NestJS + Next.js) + PostgreSQL/Prisma
Étoiles 49
Dernière MAJ 2024-07
Catégorie cat-accounting

Description

Invoicerr est une application de facturation open source écrite en TypeScript avec une architecture moderne séparant un backend NestJS (API REST documentée, ORM Prisma) et un frontend Next.js (React, Tailwind). Le projet cible explicitement les freelances et auto-entrepreneurs qui veulent un outil plus simple que app-invoice-ninja mais plus moderne que app-invoiceplane, avec une UX 2024.

Les fonctionnalités couvrent le cycle de facturation essentiel : gestion de clients, émission de factures et devis, calcul automatique TVA / HT / TTC, multi-devises, personnalisation des mentions (logo, SIRET, conditions de paiement), génération PDF côté serveur, et historique consultable par client. Le code suit les bonnes pratiques TypeScript (types stricts, validation Zod, tests unitaires), ce qui en fait une bonne base de fork pour des besoins métier spécifiques.

L'auto-hébergement est facilité par la présence d'un docker-compose.yml clé-en-main (app + PostgreSQL) sur le dépôt. L'API REST documentée (Swagger) ouvre la porte à des intégrations avec des scripts de relance, des tableurs ou un pipeline de reporting. Inconvénient : le projet reste jeune, la communauté est restreinte, et il n'y a pas (encore) de passerelle de paiement ni de facture récurrente avancée.

Installation

Via Docker (placeholder à adapter)

# docker-compose.yml
services:
  invoicerr:
    image: ghcr.io/n0xgg04/invoicerr:latest
    container_name: invoicerr
    restart: unless-stopped
    ports:
      - "3020:3000"
    environment:
      DATABASE_URL: postgresql://invoicerr:secret@db:5432/invoicerr
      JWT_SECRET: changez-moi-32-caracteres
      NEXT_PUBLIC_API_URL: http://localhost:3020
    depends_on:
      - db
  db:
    image: postgres:16-alpine
    container_name: invoicerr-db
    restart: unless-stopped
    environment:
      POSTGRES_DB: invoicerr
      POSTGRES_USER: invoicerr
      POSTGRES_PASSWORD: secret
    volumes:
      - ./pgdata:/var/lib/postgresql/data

Manuelle (Node ≥ 20)

git clone https://github.com/n0xgg04/invoicerr.git
cd invoicerr
# Backend
cd apps/api && npm install && npm run build && npm run start:prod
# Frontend (autre terminal)
cd ../web && npm install && npm run build && npm run start

Configuration

Variables d'environnement principales côté backend : DATABASE_URL (PostgreSQL via Prisma), JWT_SECRET (signature des tokens d'auth), SMTP_* (envoi de factures par email). Côté frontend : NEXT_PUBLIC_API_URL (URL du backend). Le fichier prisma/schema.prisma permet d'ajuster les modèles ; un prisma migrate deploy est requis au premier démarrage.

Alternatives

Sécurité

  • JWT_SECRET : chaîne aléatoire ≥ 32 caractères, jamais partagée
  • Activer HTTPS via reverse-proxy (Traefik, Caddy) — voir recettes-docker-compose
  • PostgreSQL : ne pas exposer le port 5432 sur l'hôte
  • Sauvegardes : pg_dump quotidien + rotation (rclone vers S3/Backblaze)
  • Lancer npm audit régulièrement et activer Dependabot/Renovate
  • En production multi-utilisateurs, activer un rate-limiting (ex. via Traefik middlewares)

Ressources

Pages Liées