mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-15 17:24:10 +00:00
61e1efd81b67fc08ec78131f3ca6981c4432f376
Pulls invoiceshelf/modules ^3.0 from packagist — a thin extension package on top of current upstream nwidart/laravel-modules ^13.0 — replacing the stale 2021-era invoiceshelf/modules ^1.0 fork that bundled its own copy of nwidart. The host app's autoloader now resolves Nwidart\Modules\* from vendor/nwidart/laravel-modules and InvoiceShelf\Modules\* from vendor/invoiceshelf/modules. Existing imports of Nwidart\Modules\Facades\Module keep working unchanged. config/modules.php is republished from upstream v13 with two InvoiceShelf-specific overrides: - activators.file.statuses-file kept at storage/app/modules_statuses.json so existing installations don't lose track of which modules are enabled when the config is republished (upstream v13 defaults to base_path()). - New lang/menu and lang/settings entries in stubs.files / stubs.replacements that pair with the custom module:make stubs shipped from the package. Wires wikimedia/composer-merge-plugin (a transitive dependency of nwidart) so each module's nested composer.json autoload mapping is merged into the host autoloader at composer dump-autoload time. This is what makes a module generated via php artisan module:make MyModule actually loadable. The plugin is added to allow-plugins and configured via extra.merge-plugin.include. Drops the stale Modules\\: Modules/ PSR-4 fallback root from autoload — it didn't match nwidart's app/-prefixed module layout and was always broken for generated modules.
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%