- How do I install altek/accountant in a Laravel application?
- Install it with composer require altek/accountant, then publish the package config and migrations and run php artisan migrate. After that you attach the package trait to the models you want tracked and, for the bookkeeping side, define your chart of accounts and start recording debit and credit journal entries. A pilot is typically achievable in under a day for a developer comfortable with Eloquent.
- Which Laravel and PHP versions does altek/accountant support?
- The available material does not publish a clear support matrix, so check the composer.json constraints and the release history before committing. Because the package mirrors model schemas into ledger tables, Laravel major upgrades and database driver changes are the most likely breaking points. Confirm there is a maintained branch for the Laravel version you actually run.
- How does altek/accountant record journal entries and account balances?
- You define a chart of accounts, record debit and credit journal entries through the shipped Eloquent models and helpers, and then query balances per account. Ledger rows are treated as append-only at the application level, so the package expects your code not to mutate them. Double-entry integrity depends on your application posting balanced entries.
- How does it resolve which user made a change?
- Actor attribution comes from the currently authenticated user via the standard auth guard and is stored alongside the ledger record. Outside HTTP, in queues, scheduled jobs, console commands or service-to-service calls, there is no session, so you need to set the acting user explicitly per operation. Verify that the version you install supports explicit actor assignment before relying on it.
- Does altek/accountant handle soft deletes, restores and force deletes?
- It captures created, updated, deleted and restored model events, so soft deletes and restores are covered when you use Eloquent's SoftDeletes trait. Force deletes and database-level cascading deletes are worth testing against your own schema, since cascades bypass model events entirely. Write integration tests for each of these paths before depending on the history.
- Are bulk updates, raw queries and imports audited?
- No. Eloquent events are silently bypassed by DB::table() updates, Model::query()->update(), raw SQL and bulk imports, which produces audit gaps that can look like tampering. Treat this as a documented gap and add compensating controls, such as restricting those write paths or reconciling against a separate change log. This matters most when the history is used for compliance.
- Does the ledger write run in the same transaction as my business write?
- Audit and ledger writes ride the same transaction as the model write, so a ledger failure can roll back a legitimate business operation. That is consistent but adds a failure mode to your critical path and should be tested under load. If you need non-blocking behaviour, plan queueing carefully, because ordering matters in an accounting ledger.
- What is the storage and index cost per million audited writes?
- The package mirrors source schemas into per-model revision tables, so table count and storage grow with the number of audited models and the volume of writes. No benchmarks are published, so measure index footprint and table growth on your own data. Plan an archival or pruning strategy early rather than retrofitting one later.
- Is altek/accountant actively maintained and safe for production?
- The package has essentially no community validation: zero stars, zero dependents, a GitLab-hosted repository outside mainstream Composer visibility, and no visible security disclosure process or release cadence. The realistic risk profile is a single-maintainer or already-dormant project. For a compliance-adjacent purpose, adopt it only with a fork you control and your own tests.
- What are the alternatives, and can we fork altek/accountant?
- Alternatives include writing your own trait-based change history, using a widely adopted Laravel audit package with active maintenance, or calling an external accounting service. Check the license before forking and confirm it permits an internal fork you own and patch. If you do adopt it, assign a named internal owner for the fork and a review of its query construction and mass-assignment surface.