secretary/core
Core package for the Secretary Laravel ecosystem, supplying shared contracts, service providers, and foundational utilities that other Secretary packages build on. Install it as the base layer for consistent configuration and integrations.
Architecture fit. secretary/core is the read-only split of a monorepo library, not a standalone application package. That pattern (Composer subtree-split, as used by illuminate/*) is well understood and generally safe to consume, but it carries a specific implication: the package is a leaf dependency by design, and its release cadence, tag semantics, and issue tracker all live in the parent repository. Before any architectural commitment, confirm how core relates to the rest of the Secretary distribution (is it the shared runtime for a config-driven admin/CRUD layer? does it require a companion secretary/secretary installer? does it ship a service provider that auto-registers?). The answers determine whether we are adopting a library or a framework.
Integration feasibility. Mechanically, adoption is low-friction: MIT license, Composer-native, and a Laravel service provider can be discovered and registered without touching bootstrap code. The real feasibility question is contract surface — what does core expect from our domain layer (model base classes, config schema, field definitions, migration ownership)? If the package owns schema generation, it will want to drive migrations, which immediately collides with an existing, hand-managed migration history. That is the single largest feasibility gate and should be spiked first.
Technical risk. High, and concentrated in three areas:
The opportunity score (≈42) is consistent with a package that has a coherent design but no market proof.
Key questions.
require constraint today, and how quickly did the last two Laravel majors land?core own database migrations and table naming, or does it operate over models we define?Stack fit. The package is a natural shape match for a Laravel monolith that already uses service providers, config publishing, and Eloquent. It is a poor fit for anything with a strict domain boundary — a modular monolith with enforced boundaries, or a service that must not expose an admin surface. Assume it presumes a conventional Laravel app skeleton until proven otherwise.
Migration path. Sequence the work to fail cheaply:
secretary/core plus any companion packages, and reproduce one non-trivial resource end to end. Deliverable is a written verdict on the config schema, the migration story, and the constraint set — not a demo.Compatibility. Two coexistence questions must be answered before step 2. First, does it conflict with an existing admin layer (Nova, Filament, Backpack) at the route, config-namespace, or service-provider level? Second, are its asset/route registrations namespaced, or will they squat on generic paths? Run the pilot behind a route-prefix and a dedicated auth guard so a rollback is a single config line.
Sequencing. Do not let this package touch authentication, authorization, or tenancy boundaries in phase one. Keep it strictly to CRUD over a domain model we already own. Any adoption that requires the package to define identity is a re-scoping decision, not an integration task.
Maintenance. Ongoing cost is dominated by upstream divergence, not our own code. We will be tracking a package whose releases are cut from a monorepo on someone else's schedule; if the parent goes quiet, we inherit the fork. Budget explicitly for a named owner who watches the parent repo, and treat a fork as a pre-approved contingency rather than an escalation. Pin to exact versions (1.2.3, not ^1.2) and upgrade deliberately.
Support. There is no vendor, no SLA, and no community to lean on. Support is whatever the maintainers volunteer. That is acceptable for an internal admin tool with a small blast radius; it is not acceptable anywhere the package sits on a customer-facing path or a revenue-critical workflow. If the team cannot absorb "we fix it ourselves" as a realistic outcome, this package should not ship.
Scaling. Two vectors to watch. Data volume: config-driven admin layers commonly build list views with naive query construction — validate pagination, filtering, and eager-loading behaviour against a table with real row counts, not fixtures. Schema breadth: the config DSL tends to scale worse than the code it replaces; past a few dozen resources the configuration becomes its own maintenance surface with no type safety. Cap the number of resources it owns and re-evaluate at that cap.
Failure modes. Ranked by likelihood and severity:
Ramp-up. Expect 3–5 days for a Laravel-fluent engineer to become productive in the config DSL, plus 1–2 days of genuine friction learning its conventions and its failure messages. The absence of tutorials and Q&A means that ramp-up is unassisted — the learning material is the source code. That is tolerable at this adoption scale but does not amortize: if the team grows, plan for a written internal runbook as a deliverable of the pilot, or the second engineer pays the same cost again.
Bottom line for the decision owner. This is a low-cost, low-commitment experiment and a poor foundation. The integration ceiling is a bounded internal admin module behind a feature flag, with exact version pins and a named owner. Anything beyond that — customer-facing surface, identity, or broad schema ownership — should wait for evidence of upstream health that does not currently exist.
How can I help you explore Laravel packages today?