alis/dico
alis/dico is a Laravel package for building and managing dictionaries or glossaries, with models, migrations, and helpers to store terms, definitions, and multilingual entries for documentation and reference.
Architecture fit. alis/dico is a Laravel-oriented "dictionary data manager" — in practice this pattern addresses the recurring need for governed reference data: enumerations, status codes, lookup lists, and label/value pairs that would otherwise be hard-coded in enums, config files, or ad-hoc lookup tables. Architecturally that is a good fit for any Laravel application with a domain that has configurable vocabularies (catalogues, classifications, workflow states, regulatory code lists). It is a poor fit as a general-purpose KV store or as a replacement for a CMS taxonomy layer; scope it to reference data only. Because the package is Laravel-flavored, it will assume Eloquent models, migrations, service container bindings, and likely a config file — verify the actual coupling before designing around it.
Integration feasibility. Technically low-friction to trial: MIT license, Composer install, and (presumably) publishable migrations/config. The genuine blockers are informational, not technical. With 3 stars, 0 dependents, and no downstream consumers to learn from, there is no community evidence of production use. I would treat this as an unvetted component: require a source read of the service provider, model layer, and any caching before it touches a production schema. Feasibility is "yes in a day, contingent on code review."
Technical risk. Rated high on supply-chain and longevity, low on runtime complexity.
Key questions for the maintainers / code review.
Stack fit. Suitable for a Laravel 9/10-era monolith or modular monolith where reference data is currently duplicated across enums and seeders. It is a weaker fit for a service-oriented estate where reference data should be a shared, versioned service consumed by multiple runtimes — in that case the dictionary belongs in a small internal API, and this package becomes an implementation detail inside it rather than a library linked into every app.
Migration path. Sequence it as an extraction, not an addition:
dico; leave truly static codes as language-level enums.alis/dico directly.That adapter boundary is the single most important decision: it converts a high-risk dependency into a swappable one.
Compatibility. Pin the package at an exact version in composer.json; do not float. Run it first against the oldest Laravel version in your supported matrix, since packages of this vintage tend to lag the newest majors. Check for framework-deprecated patterns (facade aliases, $dates, string-based model attributes) that break on Laravel 11+.
Sequencing. Week 1: source audit and a throwaway spike in a sandbox app. Week 2: adapter interface plus backfill scripts. Week 3: shadow-read in staging against production-like data, comparing dico output to legacy constants. Week 4: cut over reads, then writes. Do not parallel-run writes; pick a single source of truth at cutover.
Maintenance. Assume you are the maintainer. Budget a modest but permanent allowance: framework-major upgrades, PHP version bumps, and security patches will not arrive from upstream on your schedule. Fork-and-vendor under your org is the pragmatic posture if the audit passes; if it fails, reimplement the ~300–800 lines yourself and skip the dependency entirely. At 3 stars and 0 dependents, the "build vs. adopt" math tilts toward build unless the feature surface is genuinely broad.
Support. No vendor SLA, no commercial backing evident, small issue backlog. Escalation path is "read the source." That is acceptable for a leaf utility, unacceptable if it sits under a revenue-critical catalogue.
Scaling. Reference data is read-heavy and small; expect cache-backed reads with negligible database load. The scaling concern is not throughput but operational scaling of change: who can edit dictionaries, what approval exists, how changes propagate to caches across instances, and whether edits are audited. If the package ships no admin surface and no audit trail, you must build both, and those are the expensive parts — not the storage.
Failure modes.
Ramp-up. Low for developers — a day to be productive if the API is idiomatic. The real ramp is organizational: content owners need a workflow, and support/on-call need a runbook for "the dropdown is empty." Allocate onboarding time to whoever will own dictionary curation, and write the runbook at adoption, not after the first incident.
Recommendation. Conditional pilot only. Green-light an isolated spike behind an anti-corruption layer in a non-critical domain; require a passing source audit against the six questions above and a declared framework-support matrix. If either check fails — or if the audit reveals more than a few hundred lines of bespoke logic — reimplement the pattern internally. The dependency's functional footprint is likely small enough that ownership cost dominates integration cost.
How can I help you explore Laravel packages today?