mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-08-05 15:42:14 +00:00
3a989923d1a3a553abcaddc899957e100ef26c92
Most of docker.yaml was doing work that was duplicated or hazardous now that releases are cut from a tag. The tests were duplicated exactly: release.yaml and docker.yaml called the same reusable tests.yaml, on the same commit — once before drafting, again after publishing. No new information, and the image build queued behind it. Pint likewise: check.yaml already style-checked the commit when it landed. Both jobs go; coverage is unchanged. manual_docker_build goes too, and it was worse than redundant. Its checkout took no ref, so it built the dispatched branch while tagging with whatever string was typed — an image could be labelled 2.4.2 while containing 2.x HEAD — and `tag` defaulted to "latest", so a careless dispatch republished the moving stable tag from a branch. #710 had to add a guard purely to stop the registration dispatch doing that by accident. It was last used in September 2025 to push the legacy and alpha tags during the Docker distribution work; that is finished, and releases produce images now. A patched base image is better served by a patch release than by silently changing what a pinned tag contains. That cascade removes the tag input and the #710 guard as well, leaving register_tag as the only dispatch input and two jobs in the file. Losing the test gate would leave the image build ungated, so the release build now refuses a release with no InvoiceShelf.zip. A release either came from the tested pipeline or it gets no images — the updater is already protected this way, since registration downloads that same asset. GitHub offers no way to forbid hand-made releases; this is the closest thing, which is to make them inert. "Docker" no longer describes a workflow that registers on the updater and publishes images, so it becomes publish.yaml — matching its trigger and pairing with release.yaml, which prepares what this distributes. The recovery instructions in AGENTS.md name this workflow and would have broken silently, so they move with it.
Introduction
InvoiceShelf is an open-source web app that helps you track expenses, record payments, and create professional invoices and estimates. It is self-hosted, multi-tenant, and built for individuals and small businesses that want to keep their books on their own infrastructure.
The web application is built with Laravel and Vue 3.
To get started using Docker Compose, follow the Installation guide.
Table of Contents
Documentation
System Requirements
- PHP 8.4+ is required (since v2.2.0, when InvoiceShelf moved to Laravel 13).
- Database: MySQL, MariaDB, PostgreSQL, or SQLite.
- Before updating from inside the app, verify your server meets the target version's PHP and extension requirements.
- The in-app updater verifies requirements and refuses to proceed if they are not met.
Download
Discord
Join the discussion on the InvoiceShelf Discord: Invite Link
Roadmap
Rough roadmap of things to come, not in any specific order:
- Automatic Update
- Email Configuration
- Installation Wizard
- Address Customisation & Default Notes
- Edit Email before Sending Invoice
- Available as a Docker image
- Performance Improvements
- Customer View Page
- Custom Fields on Invoices & Estimates
- Multiple Companies
- Recurring Invoices
- Customer Portal
- Decoupled system settings from company settings (v3.0)
- Proper multi-tenancy system (v3.0)
- Company member invitations with custom roles (v3.0)
- Dark mode (v3.0)
- Full TypeScript refactor of the frontend (v3.0)
- Improved backend architecture (v3.0)
- Security hardening (v3.0)
- Reworked installation wizard (v3.0)
- Module Directory (v3.0)
- Rewritten Payments module (v3.0)
- Accept Payments (Stripe integration)
- Improved template system for invoices and estimates
Translate
Help us translate InvoiceShelf into your language: https://crowdin.com/project/invoiceshelf
Star History
License
InvoiceShelf is released under the GNU Affero General Public License v3.0. See LICENSE for the full text.
Languages
PHP
59.9%
Vue
36.1%
Blade
3.2%
Shell
0.6%
Dockerfile
0.1%