civicrm/civicrm-core
CiviCRM is open-source CRM software for nonprofits, NGOs, and civic organizations. The core package manages contacts, contributions, memberships, events, cases, campaigns, and reporting, integrates with Drupal, WordPress, and Joomla, and supports extensive customization.
composer require into a Laravel app. It is a standalone PHP/MySQL constituent CRM (contacts, contributions, pledges, memberships, events, cases, grants, bulk email, ACLs) that runs on a CMS host — Drupal, WordPress, Joomla, Backdrop — or its own Standalone bootstrap. The decision it informs is: do we adopt a constituent-CRM platform rather than build person → relationship → money → entitlement → participation ourselves? That is a six-figure build and a multi-year maintenance line for a commodity domain, which is exactly the case for buy/adopt.crmApi and onto APIv4 — mirror that deprecation curve in your integration roadmap. Designing against APIv3 today buys you a migration you didn't budget.createTestEntity() fixtures, no new lodash, one-time bindings, ts() for strings. That's a professionally curated project — good news for upstreaming fixes instead of carrying a private patch set, and a workable answer to "is this well run?" It also sets an internal standard for any AI-assisted contributions we send upstream.lab.civicrm.org); GitHub is a mirror. The gap between opportunity (≈45) and overall score (≈29) reads as persistent real demand for open-source constituent CRM that package-ecosystem metrics can't capture. Use it as "the market exists," not "adoption is proven" — validate through the extension ecosystem and community channels.Consider adoption when:
Look elsewhere when:
composer.json. It isn't one. composer require civicrm/civicrm-core into a Laravel app is unsupported — the repo's composer.json serves its own dev/CI tooling; you'd still need civicrm.settings.php, file paths, a CMS host, and a database installer run. Forcing it produces a brittle two-runtime architecture with no shared ORM, auth, or migrations. Correct the premise before estimating.To executives: CiviCRM is a mature, AGPL-licensed open-source constituent CRM covering the nonprofit operating core — contacts, donations, memberships, events, grants, cases, bulk email — that would otherwise cost mid-six figures to build and low-to-mid five figures per seat annually to license. The market signal is strong (opportunity ≈45) even though conventional adoption metrics look thin (overall ≈29, zero composer dependents); that gap is explained by it being an application, not a library, and by active development living on GitLab rather than GitHub. Do not adopt blind. Propose a timeboxed spike — one vertical use case, APIv4-integrated against our stack, self-hosted — with a go/no-go on three criteria: data-model fit, extension cost versus build cost, and AGPL compatibility with our distribution plan.
To engineering: Treat this as a sibling service, not a dependency. Laravel owns product UX, auth, billing, and jobs; CiviCRM owns contacts, activities, relationships, contributions, groups, custom fields, and dedupe. Integrate through APIv4 REST as the primary surface, webhooks or civicrm_post via a small CMS extension we own as secondary, and cv for provisioning. Build a CrmClient adapter interface with a CiviCRM implementation behind it — that's the hedge against both AGPL and upgrade risk, and it lets tests stub the CRM instead of provisioning one. Do not share a database: CiviCRM owns its civicrm_ schema with views, triggers, and its own migration cadence; cross-system SQL reads are a latent outage. Two hard gates up front: PHP version parity (CiviCRM's supported range lags Laravel's floor — pin the CiviCRM release line first, then the Laravel version) and authentication (API key + site key is legacy; plan on the authx extension for JWT/OAuth-style flows, decided during the spike). Two constraints to internalize: AGPL is a distribution constraint on modifications, and the codebase is mid-migration (APIv3→APIv4, AngularJS→modern front-end, QuickForm for forms). Both are manageable if we build above the seam and upstream fixes; both get expensive if we fork. Note the maintainers' explicit requirement that AI-agent involvement be declared in commits and PRs — any contribution we send upstream must comply, and we should hold the same standard internally.
Ask: Two engineering weeks for the spike (Phase 0: CiviCRM in a container on WordPress or Drupal, APIv4 read/write with authx tokens, top five entities validated, PHP parity confirmed), plus a legal read on AGPL obligations under our intended distribution model and a decision on CMS-host ownership. Decision at the end: adopt, adopt-with-extension-layer, or build.
How can I help you explore Laravel packages today?