savannabits/kuali-companion
A Laravel companion package for integrating Kuali into PHP applications. It wraps Kuali APIs in a convenient, expressive interface so you can query and sync institutional data with less boilerplate and cleaner code.
composer require savannabits/kuali-companion
.env. The config file is the first place to look — it tells you which Kuali endpoints/accounts the package is wired to.KualiCompanion class (and its facade, if registered). This is the object you resolve from the container in your own services.kualiJournalVoucher() on the companion to get a pre-wired instance, populate it, and post it to your Kuali sandbox.app()) rather than new-ing it, so config and HTTP client wiring are respected.$kuali->kualiJournalVoucher() returns a JV instance bound to the companion's configuration — this is the intended v1.2.0+ pattern. Keep JV construction in one place (a dedicated service or action class) so a future signature change is a one-file fix.$tries/backoff, and guard against double-posting with your own idempotency key or a "posted" flag on the local record.pending/posted/failed) plus the raw response. Reconciliation against Kuali becomes trivial.Http::fake() around the companion's client lets you assert the outgoing JV document without hitting Kuali; assert on the shape of the ledger lines, not just the status code."savannabits/kuali-companion": "1.2.*") and treat any minor bump as potentially behaviour-changing for JV payloads. Read the diff before upgrading in production.kualiJournalVoucher() accessor is new in v1.2.0. Code written against v1.0.x that instantiated the JV class directly will still work but bypasses the companion's config; migrate those call sites so timeouts, base URL, and auth come from one place.info on every call will flood your logs and leak financial data into places with looser retention.php artisan config:clear — a stale cached config is the most common cause of "it works locally, not in CI."How can I help you explore Laravel packages today?