Search by

liberusoftware / accounting-erp-laravel

curtisdelicata

Liberu Accounting application built on the Liberu Laravel foundation.

Package info

github.com/liberusoftware/project-accounting-erp-laravel-filament

Type:project

pkg:composer/liberusoftware/accounting-erp-laravel

Fund package maintenance!

liberusoftware

Statistics

Installs: 6

Dependents: 0

Suggesters: 0

Stars: 172

Open Issues: 108

v19.1.2 2026-11-14 17:28 UTC

This package is auto-updated.

Last update: 2026-11-14 19:44:32 UTC


README

Production-ready accounting and ERP application for ledgers, banking, tax, expenses, approvals, and reporting.

Software · Hosting · Services · Liberu Group

PHP Laravel Filament Livewire

Install Tests Docker Codecov Latest release License: MIT

Liberu Accounting ERP is the deployable accounting application built on the Liberu Laravel foundation. It combines ledger, invoicing, procurement, banking, tax, payroll, inventory, reconciliation, approvals, and reporting capabilities with Filament and Livewire surfaces.

Key features

  • Double-entry general ledger, chart of accounts, journal entries, posting, period close, and reversals
  • Invoices, bills, estimates, payments, sales orders, receipts, credits, and approval workflows
  • Banking connections, reconciliation, exchange rates, multi-currency transactions, and financial statements
  • Tax, payroll, HMRC integrations, fixed assets, inventory valuation, subscriptions, and recurring documents
  • Filament admin and accounting panels with Livewire pages, tenancy, roles, permissions, audit trails, and settings
  • API v1 endpoints, OpenAPI documentation, a typed PHP SDK, notifications, queues, backups, and observability
  • Independently versioned modules installed into tracked /modules directories
  • Independently versioned themes installed into tracked /themes directories with inheritance and safe fallback
  • Architecture tests for manifests, dependency direction, package ownership, and presentation boundaries

Requirements

Dependency Supported version
PHP 8.5
Laravel 13.x
Filament 5.x
Livewire 4.x
Composer 2.x
Node.js Latest stable release
Database A Laravel-supported SQL database

Quick start

git clone https://github.com/liberusoftware/project-accounting-erp-laravel-filament.git
cd project-accounting-erp-laravel-filament
composer install
cp .env.example .env
php artisan key:generate
npm install
npm run build
php artisan migrate
php artisan serve

Review .env before migrating. Use php artisan migrate --seed only when example data is wanted. The optional interactive install.sh supports local, Docker, and Kubernetes-oriented setup. On macOS, run it with bash install.sh from the repository directory. On Windows, use a WSL2 Linux terminal with the required PHP, Composer, Node.js, and database tools installed, then run bash install.sh there.

Composable package architecture

Each runtime capability is an independent liberu-module Composer package with its own GitHub repository, release lifecycle, manifest, provider, documentation, and tests. Each visual package is an independent liberu-theme. Shared contract packages and the custom installer are normal Composer dependencies under /vendor.

Application composition
├── modules/       # Composer-installed module releases, tracked in Git
├── themes/        # Composer-installed theme releases, tracked in Git
├── app/           # Host-only composition and integration
├── config/        # Enabled modules and application policy
└── tests/         # Cross-package and application tests

Composer is the source of installation and version truth:

# Update all dependencies, including modules and themes
composer update --with-all-dependencies

# Update one capability from its tagged GitHub repository
composer update liberusoftware/search --with-dependencies

The trusted liberusoftware/composer-installer places packages according to type:

Composer type Install path Repository convention
liberu-module /modules/{installer-name} liberusoftware/module-{installer-name}
liberu-theme /themes/{installer-name} liberusoftware/theme-{installer-name}
Contract/library /vendor Package-specific repository

modules/ and themes/ are intentionally kept out of .gitignore. Their reproduced contents are committed so deployments and reviews can see the exact installed code, while composer.lock pins each release and source commit. Do not edit an installed module only in this host: contribute the generic change to its package repository, release it, and update the Composer dependency here.

Installation, runtime enablement, authorisation, and commercial entitlement are separate concerns. config/modules.php selects the enabled capability graph; the module manager validates dependencies and orders providers without scanning application classes manually.

Every module also publishes a validated feature catalog in module.json. Hosts can inspect the complete catalog or search it without loading module internals:

php artisan module:features
php artisan module:features health
php artisan module:status search

The existing integrated ERP implementation is owned by three product packages:

Package Owns
accounting-erp Existing ERP models and schema, services, events, jobs, authentication actions, commands, factories, and seeders
accounting-erp-filament ERP pages, resources, widgets, portal presentation, and Blade components
accounting-erp-http ERP HTTP controllers, API resources, routes, and HTTP views

The ERP product schema remains separate from the newer provider-neutral accounting capability schemas. app/ composes panels and application policy; database/seeders/DatabaseSeeder.php delegates to the ERP package. Existing migration filenames and polymorphic identifiers are retained. Package compatibility autoloaders resolve previously serialized application class names.

Module and theme development

A module owns one cohesive capability and communicates through public contracts, actions, events, registries, or stable identifiers. Domain modules do not depend on Filament or themes; optional *-filament, *-api, and *-livewire packages provide presentation adapters.

Every module contains:

composer.json
module.json
README.md
LICENSE.md
CHANGELOG.md
src/
database/ or resources/ when required
tests/

Themes contain composer.json, theme.json, source assets, compatibility metadata, accessibility/fallback expectations, tests, documentation, and asset licensing information. See the module development guide and theme architecture.

Testing, coverage, and quality

composer validate --strict
vendor/bin/pest
vendor/bin/pint --test
npm run build

The test suite exercises application behaviour, API boundaries, Filament pages, Livewire flows, and every installed module provider. Package architecture tests verify metadata, declared dependencies, host isolation, UI boundaries, and Composer ownership.

Coverage is generated as Clover XML and enforced in CI for the host application:

php artisan test --coverage --coverage-clover=coverage.xml --min=100

The complete release gate is available as scripts/verify-release (or composer verify). It fails when coverage, static analysis, dependency audits, asset builds, Docker Compose, or Kubernetes validation cannot be completed.

The live coverage report is published to Codecov. Package coverage is measured by each package's own test workflow.

Publishing the component repositories

The package fleet derives repository names from directory names, using module- for entries in modules/ and theme- for entries in themes/. The host application remains accounting-erp-laravel and is not submitted as a Composer package.

# Inspect the independently released repositories
scripts/fleet status

# Clone any missing component repositories into the fleet workspace
scripts/fleet clone

# Run a package command across the fleet
scripts/fleet run 'vendor/bin/pest'

Fleet operations require authenticated git access to the organisation. Package repositories are the source of truth; the host application is deliberately not mirrored into them.

After the repositories are public, register every Composer package on Packagist:

# Verify all package-to-repository mappings without submitting
php scripts/submit-packagist.php --dry-run

# Obtain the MAIN API token from packagist.org/profile, then refresh the packages
export PACKAGIST_USERNAME='your-packagist-username'
export PACKAGIST_API_TOKEN='your-packagist-api-token'
php scripts/submit-packagist.php
unset PACKAGIST_API_TOKEN

The submitter skips packages that are already registered and reports individual API failures without printing the configured token.

Documentation

Related Liberu projects

Project Repository Scope
Accounting liberusoftware/accounting-erp-laravel Ledgers, banking, tax, expenses, close, and reporting
Automation liberusoftware/automation-laravel Governed workflows, provider-neutral AI, approvals, and connectors
Billing liberusoftware/billing-laravel Billing, subscriptions, payments, invoices, and revenue operations
Boilerplate liberusoftware/boilerplate-laravel Modular Laravel foundation used by this application
Browser game liberusoftware/browser-game-laravel Browser-based game platform and domain capabilities
CMS liberusoftware/cms-laravel Content, publishing, pages, media, search, and delivery
Control panel liberusoftware/control-panel-laravel Hosting, infrastructure, DNS, mail, backups, and operations
CRM liberusoftware/crm-laravel Customers, leads, opportunities, sales, and service
Ecommerce liberusoftware/ecommerce-laravel Catalogues, checkout, orders, fulfilment, and returns
Genealogy liberusoftware/genealogy-laravel Genealogy records, relationships, sources, and research
Maintenance liberusoftware/maintenance-laravel Maintenance planning, assets, work orders, and operations
Real estate liberusoftware/real-estate-laravel Property, listing, tenancy, and transaction workflows
Social network liberusoftware/social-network-laravel Social profiles, groups, content, messaging, and discovery

Security

Do not report security vulnerabilities through public GitHub issues. Email security@liberusoftware.com with reproduction details and the affected version so the report can be handled privately.

License

This project is open-source software available under the MIT License. The linked licence text is authoritative; this summary is not legal advice.

Feedback and contributing

Feedback and contributions are welcome. Report reproducible bugs, propose focused enhancements, improve documentation or translations, and submit tested changes. Search existing issues first. Pull requests should explain the problem and approach, remain focused, pass the required checks, and document user-visible or breaking changes. Security reports must follow the private route above.

Contributors

Thank you to everyone who helps improve Liberu. View the contributors graph.

Automatic module and theme publishing

.github/workflows/sync-packages.yml publishes packages changed under modules/ or themes/ on pushes to main. A manual run reconciles all tracked packages. Each package needs a composer.json with a liberusoftware/* name. Files are copied from Git into the root of liberusoftware/module-<directory> or liberusoftware/theme-<directory>. Where .liberu-meta.json defines a repositoryPrefix, that design is authoritative (for example, modules/module-manager becomes module-module-manager). Without a configured prefix, an existing module- or theme- directory prefix is kept. Destination history is preserved, deleted files are removed, and unchanged packages do not receive another commit or release. Removing an entire package leaves its public repository intact. This workflow makes tracked package edits publishable; install checks still require the project's Composer dependencies to resolve to those published package contents.

Configure these secrets in the packagist GitHub environment (or as repository or organization secrets available to this repository):

  • MODULE_SYNC_TOKEN: organization-authorized GitHub token able to create public repositories and read/write package contents and releases across the target repositories. Because package snapshots include .github/workflows, allow workflow writes too. A classic PAT needs repo and workflow scopes and an organization role permitted to create repositories. The default GITHUB_TOKEN cannot publish across these repositories.
  • PACKAGIST_USERNAME: Packagist account that owns or maintains these packages.
  • PACKAGIST_API_TOKEN: that account's main API token, required to submit new packages as well as update existing packages.

New packages start at their declared stable Composer version, or v1.0.0. Existing packages use the highest stable repository tag: a higher declared Composer version wins, BREAKING CHANGE: or type!: commits bump major, feat: commits bump minor, and other changes bump patch. Only commits touching the package since the last successful sync affect this decision. The first automated run and manual runs reconcile all packages, so canceled or failed runs cannot silently drop package changes. Tags and commits are pushed atomically, then a GitHub release is created and the package is submitted to or refreshed on Packagist. Rerunning a failed job completes publication without issuing another release for the same contents. Concurrent pushes from other projects are rejected instead of force-pushed; rerun the failed job.

The source project and its lockfile are not rewritten by publication. Different projects publishing the same directory name share a destination repository; coordinate their package contents. Run the publisher's local tests with python3 -m unittest discover -s .github/scripts -p 'test_sync_packages.py'.

Project family and presentation options

This repository hosts Accounting ERP with Laravel and Filament. Ledgers, tax, reporting and finance workflows. Its existing installation instructions and manifests govern this application. The other presentations are independent skeletons derived from their matching Boilerplate foundation; repository availability does not establish product feature parity.

Other Laravel and Filament projects

Project Scope
Boilerplate Shared application foundation and module composition
Automation AI gateways, approvals, rules and integrations
Billing Subscriptions, pricing, payments and provisioning
Browser Game Game worlds, players and community workflows
CMS Content authoring, publishing and delivery
Control Panel Infrastructure and hosting operations
CRM Relationships, sales pipelines and customer service
Ecommerce Catalogs, checkout, orders and fulfillment
Enterprise SAP Enterprise workspace and cross-product orchestration
Genealogy Family trees, research, evidence and collaboration
Liberu Platform Official sites, staff applications and platform composition
Maintenance Assets, work orders, schedules and field operations
Music DAW Composition, recording, sequencing and audio production
Real Estate Listings, sales, lettings and agency operations
Social Network Profiles, feeds, communities and moderation

Other presentations for Accounting ERP

  • Laravel · Inertia · Vue: Laravel routes and sessions with Vue pages over the Inertia protocol.
  • Laravel · Inertia · React: Laravel routes and sessions with React pages over the Inertia protocol.
  • Nuxt · Vue: Independent Vue application with Nuxt server rendering and reviewed API integration.
  • Next.js · React: Independent React application with explicit Next.js server/client boundaries.
  • React Native · Expo: Native iOS/Android application using React Native and Expo.
  • Flutter · Mobile: Flutter iOS/Android application using Dart and mobile widgets.
  • Dart · Desktop: Dedicated Dart desktop application with a Flutter host for Linux, macOS and Windows.
  • Dart · Mobile: Separate Dart mobile application with a Flutter host for iOS and Android.

Use the presentation implementation guides and product documentation to select compatible modules, reviewed contracts and the correct deployment boundary. Laravel remains authoritative for domain rules and tenant authorization across all clients.