Contacts module: the universal person and organization record
- Dominant language
- C#
- Stars
- 6
- Forks
- 7
- Avg merge
- 4h 42m
- Merged PRs (30d)
- 307
Description
Part of #249.
A universal party record: a person or an organization, with names, channels (email, phone, address), and a type. The thing a CRM tracks as a lead, a survey tracks as a respondent, a membership app tracks as a member, an invoicing app tracks as a customer.
Three unrelated systems that reuse it: a CRM (contacts and companies), a surveying tool (respondents), a club or membership back office (members). That is the bar for a primitive.
Contract:
- A Contact with Person or Organization shape, arbitrary typed fields via the content-type mechanism, and links between contacts (a person belongs to an organization).
- Deduplication on a natural key (email) with a documented merge path.
- Exposed through public delivery and RBAC like any content, tenant-scoped.
Done when: a module ships with tests (create, dedupe, link, tenant isolation), an admin screen, and a doc showing a CRM-style and a survey-style use of the same record.
Contributor guide
Assessment
This issue has not been assessed yet.