werk365/identitydocuments
Laravel package for reading and validating identity documents. It parses MRZ data from passports and ID cards, verifies checksums, and extracts details such as names, document numbers, nationalities, birth dates, and expiry dates.
Architecture fit
DocumentParser interface — never called directly from controllers or domain services.Integration feasibility
composer require, one provider registration, optional config publish. A spike is measured in hours, not days.--ignore-platform-reqs is not acceptable in production. Note also that we cannot verify the actual composer.json constraints from the release note alone; a "Laravel 9 support" line may mean ^9.0 only, or a widened range — audit before planning.^2.0 floating constraint can silently change installability and dependency resolution on the next composer update. That is a versioning-discipline smell and reinforces explicit pinning.Technical risk (qualitative)
| Risk | Severity | Notes |
|---|---|---|
| GPL-3.0 distribution exposure | High if distributed | Blocker for on-prem/embedded; manageable for internal SaaS. Unverified in this release — re-check license file, it can change between versions. |
| Maintenance abandonment | High | Single-maintainer profile; 2.0.5 shows liveness but no roadmap beyond Laravel 9 |
| Framework version lock | High (upgraded from Medium-High) | 2.0.5 confirms a Laravel 9 ceiling; 10/11/12 remain blocked without a fork |
| Silent misparse (wrong DOB/expiry/document number) | High | Compliance and fraud-decision impact; not a crash, so it hides |
| Unsupported document coverage (TD1/TD2/TD3, visas, non-Latin transliteration) | Medium | Must be validated against our actual document mix |
| Input handling on untrusted strings (exceptions, encoding) | Medium | Needs defensive wrapping; 2.0.5 makes no claim here |
| Silent upgrade surface from floating constraints | Medium | Patch-level framework changes under ^2.0 |
Key questions for the maintainer / spike (revised after 2.0.5)
composer.json constraints after 2.0.5 for php and illuminate/support? Is it ^9.0 only, or a widened range permitting 10/11/12? Are there transitive dependencies with their own license or maintenance issues?Stack fit
ParsedDocument value object (document type, number, name fields, DOB, expiry, issuing state, nationality, checksum status, confidence).Migration path
DocumentParser; ship dark. No product surface depends on the concrete implementation. This step is unchanged and is the hedge against everything above.Compatibility
php and illuminate/support constraints against our target framework before the spike is scheduled as "small." 2.0.5 raises the odds of a fast clean install on Laravel 9 and confirms a hard stop on 10+.2.0.5, not ^2.0). 2.0.5 is itself the justification: a patch-level bump changed platform compatibility. Floating constraints on a low-cadence, single-maintainer package are an avoidable surprise.Sequencing
Legal review → spike → adapter/feature flag → corpus validation → decision gate → harden (input sanitization, timeouts, error taxonomy) → production rollout behind flag. Two changes from the prior plan: (i) the spike now also produces a fork cost estimate as a first-class output if we are not on Laravel 9; (ii) open the upstream-PR conversation (key question 5) in parallel with the spike — a maintainer acceptance is the cheapest possible path to (a) and costs one issue comment to test.
Maintenance
Support
Scaling
Failure modes
Ramp-up
Net effect of 2.0.5: it does not change the recommendation. It converts one open unknown (framework constraints) into a confirmed ceiling, and it marginally reduces abandonment risk while raising framework-lock risk. The program moves forward unchanged: legal gate in parallel, timeboxed spike, adapter behind a flag, corpus-driven decision gate — with the fork path now the default unless we are on Laravel 9.
How can I help you explore Laravel packages today?