stonkeep/moeda-real
stonkeep/moeda-real is a Laravel/PHP package for working with Brazilian Real (BRL). It offers convenient helpers to format monetary values as R$, parse localized currency strings, and handle Real amounts cleanly in your applications. Simple, framework-friendly utilities for currency input, display,...
Architecture fit. stonkeep/moeda-real is a Laravel Nova field — a presentation-layer component (a PHP Field class plus a Vue component) that renders a value inside a Nova resource. It is not a general currency library, not a domain model, and not a service. That means its architectural footprint is deliberately narrow: it sits between your Eloquent attribute and the Nova UI. It fits only if three conditions are simultaneously true — you run Laravel, you have a Nova license and an active Nova admin panel, and you specifically need Brazilian Real (BRL) presentation/input behavior. The name ("moeda real") and the stonkeep vendor prefix suggest an in-house package published publicly rather than a community library built for general adoption, which is consistent with the 0 stars / 0 dependents signal.
Integration feasibility. Mechanically trivial: a composer require, a use statement, and one line in a Nova resource's fields() method. The real feasibility question is not "can we install it" but "can we depend on it." With zero dependents and zero stars there is no evidence of production use anywhere outside the author's own application, so there is no field-tested path. Expect to spend more time reading the source than integrating it — which, for a package this small, is on the order of minutes.
Technical risk. This is the dominant concern and it is almost entirely supply-chain and lifecycle risk, not runtime risk:
Key questions to resolve before any commitment.
composer.json constraints for PHP, Laravel, and laravel/nova?Stack fit. Green-field compatibility is binary: Laravel + Nova → potentially viable; anything else → not applicable. There is no partial fit. If our admin surface is Filament, Livewire, Inertia, or a bespoke SPA, this package contributes nothing and should be closed out immediately.
Migration path. Treat this as code adoption, not dependency adoption. The recommended path is to read the source (it is small), vendor the field into our own namespace as an internal App\Nova\Fields\MoedaReal or equivalent, and keep the upstream repository as a reference rather than a Composer requirement. This converts an unmaintained third-party risk into a controlled internal artifact we can patch, test, and upgrade on our own Nova cadence. If we do take it as a dependency, pin an exact version (no caret range) and commit the lockfile.
Compatibility. Validate against the specific Nova major we run, not "Nova" generically. Build a throwaway Nova resource in a scratch environment that exercises the field in index, detail, and form contexts — these are three different rendering paths and a field can work in one and fail in another. Confirm the built assets compile under our Node/Vite toolchain if we rebuild them.
Sequencing.
Number field with a displayUsing callback covers display-only BRL formatting in a few lines.Maintenance. Assume we own it from day one. Budget a recurring line item for Nova upgrade testing — this is the predictable breakage point, and it will recur with every Nova major. A vendored copy removes the "will the package update" question but adds "did we remember to patch our copy," which is the cheaper of the two problems for a component this size.
Support. There is no support contract, no SLA, no community to search when something breaks, and no dependents to indicate someone else has already hit our bug. Escalation path is: read the source, or ask the maintainer directly and hope. Plan accordingly — do not put this on a path where a blocked field blocks a release.
Scaling. Negligible. This is a UI field with no runtime, no I/O, no background work, and no data-path involvement. It does not affect throughput, queue depth, or database load. The only scaling-adjacent concern is asset build time, which is immaterial. Note the inverse risk: because it is invisible at scale, a formatting defect will scale silently across every record rather than announcing itself.
Failure modes.
composer install fails on a clean machine. Mitigated entirely by vendoring or by committing to a private mirror.Ramp-up. Very low — measured in hours, not days. Any Laravel developer can read a Nova field in one sitting; there is no new paradigm, no new runtime, no new deployment surface. The training cost is not in learning the package, it is in learning to distrust it: establish a team norm that currency formatting is always validated against expected output in tests, never eyeballed in the UI.
TPM recommendation. Do not add this as a production dependency at its current maturity signal. Either (a) vendor the source internally and own it, or (b) skip it and implement BRL formatting with Nova's native field plus a display callback — a few lines of code with no supply-chain exposure. The package's value is as a reference implementation, not as a dependency.
How can I help you explore Laravel packages today?