Skip to content

Invoicerr is a freelance-focused invoicing app that lets you create quotes, generate invoices, track payments, and collect secure signatures.

License

Notifications You must be signed in to change notification settings

Impre-visible/invoicerr

Repository files navigation

Invoicerr

Invoicerr Banner

Invoicerr is a simple, open-source invoicing application designed to help freelancers manage their quotes and invoices efficiently. It provides a clean interface for creating, sending, and tracking quotes and invoices — so you get paid faster, with less hassle.


Dashboard Page

✨ Features

  • Create and manage invoices
  • Create and manage quotes (convertible to invoices)
  • Manage clients and their contact details
  • Track status of quotes and invoices (signed, paid, unread, etc.)
  • Built-in quote signing system with secure tokens
  • Generate and send quote/invoice emails directly from the app
  • Generate clean PDF documents (quotes, invoices, receipts, and more)
  • Custom brand identity: logo, company name, VAT, and more
  • Authentication via JWT or OIDC (stored in cookies)
  • International-friendly: Default English UI, customizable currencies
  • SQLite database for quick local setup
  • Docker & docker-compose ready for self-hosting
  • Built with modern stack: React, NestJS, Prisma, SQLite/PostgreSQL
  • REST API backend, ready for future integrations (mobile & desktop apps)
  • Plugin system for community-made features

🌍 Translation

Invoicerr uses weblate to easily manage the translations

Translation status

Translation status


🐳 Docker Installation (Recommended)

Supported Architectures

The images are built for the following architectures:

  • linux/amd64 (x86_64)
  • linux/arm64/v8 (ARMv8)

Why not linux/arm/v7?

The linux/arm/v7 architecture is not supported due to the use of prisma, which does not provide prebuilt binaries for this architecture. This means that the application will not run on 32-bit ARM devices.

The fastest way to run Invoicerr is using Docker Compose. A prebuilt image is available at ghcr.io/impre-visible/invoicerr.

🚀 Quick Start

  1. Clone the repository:

    git clone https://github.com/Impre-visible/invoicerr.git
    cd invoicerr
  2. Edit the docker-compose.yml to set your environment variables.

  3. Run the app:

    docker compose up -d
  4. Open your browser at:

    http://localhost
    

🔧 Environment Variables

These environment variables are defined in docker-compose.yml under the invoicerr service:

  • DATABASE_URL
    PostgreSQL connection string. Example:
    postgresql://invoicerr:invoicerr@invoicerr_db:5432/invoicerr_db

  • APP_URL
    Full public URL of the frontend (e.g., https://invoicerr.example.com).
    This is required for email templates and links.

  • SMTP_HOST, SMTP_USER, SMTP_PASSWORD
    Credentials and server used for sending emails (quotes, invoices, etc.)

  • SMTP_FROM
    Optional — address used as the sender for emails. If omitted, defaults to SMTP_USER.

  • JWT_SECRET
    Optional but recommended for JWT authentication. Can be any random string.
    If not set, a default secret will be used. But it can have issues with docker deployments.

Make sure port 80 is available on your host machine, or change the mapping.


💻 Manual Installation (Local Development)

Prerequisites

  • Node.js v20+
  • SQLite (or configure another DATABASE_URL)
  • PNPM or NPM

Steps

  1. Clone the project:

    git clone https://github.com/Impre-visible/invoicerr.git
    cd invoicerr
  2. Backend setup:

    cd backend
    npm install
    npx prisma generate
    npm run start
  3. Frontend setup (in a new terminal):

    cd frontend
    npm install
    npm run start
  4. Open in your browser:

    • Frontend: http://localhost:5173
    • API: http://localhost:3000

🧪 Lancer les tests end-to-end (Cypress)

Pour lancer les tests e2e localement ou en CI :

  1. Démarrer le backend et le frontend avec les variables de test :

    cd backend && npm run start:test &
    cd frontend && npm run start:test &

    (Assurez-vous d'avoir un .env.test dans chaque dossier)

  2. Dans un autre terminal, lancer Cypress :

    cd e2e
    npm install
    npm run e2e:open # ou npm run e2e:run

En CI, le workflow GitHub Actions fait ces étapes automatiquement.


📸 Screenshots

Dashboard

Dashboard Page

Quotes

Quotes Page

Invoices

Invoices Page

Clients

Clients Page

Settings

Settings Page

🧰 Technologies

⚖️ License

This project is dual-licensed:

Contact me for commercial use.

About

Invoicerr is a freelance-focused invoicing app that lets you create quotes, generate invoices, track payments, and collect secure signatures.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Languages