Files
crushdb/specification.txt
T
2026-10-13 15:35:07 +02:00

169 lines
5.8 KiB
Plaintext

SPECIFICATION (German)
Project role
- This is an online contact directory / personal archive, not a transaction
ledger. Its main job is to store and share structured information about
people and their related items under controlled access.
Core concepts
- Account (Login identity)
* One account is permanently tied to exactly one email address.
* Each email address has its own password.
* Different accounts can have different rights.
* An account is the login boundary, not the data owner in every case.
- Person
* A person is the central real-world entity.
* One person can be linked to multiple email addresses / accounts but every account /e-mail can only be linke to oner person.
* A person is not owned by any single account.
- Article
* Every person has articles.
* Articles exist in different article types.
* Article visibility is not global.
* Articles are only visible to people who hold the required rights and/or
belong to the required group(s).
- Article types
* Examples of article types:
- Contact details
- Notes
- Profile text
- Documents
- Links
- Phone numbers
- Addresses
- Social profiles
* The set of article types is fixed for the implementation, but the system
treats them as distinct, named categories.
- Groups
* Groups are person-dependent.
* Groups are NOT email-dependent.
* A group describes a set of persons.
* Group membership follows the person, regardless of which account or email
is used to access the system.
- Rights
* Rights are fixed, named capabilities.
* Rights control what can be seen, created, edited, or removed.
* Rights are used together with group membership to decide access.
Relationships
- Account <-> email
* One account, one email address, fixed binding.
- Email <-> password
* Each email has its own password.
- Person <-> accounts / emails
* One person may relate to several emails/accounts.
- Person <-> groups
* Groups are built around persons.
- Person <-> articles
* A person owns articles of various types.
- Articles <-> readers
* Reading and other actions depend on rights.
* Reading can also depend on group membership.
- Groups <-> persons
* Membership is defined by persons, not by accounts.
Access model
- Visibility rule
* An article is shown only if the requesting party has the required right
AND is allowed by the relevant group constraints.
* If either condition is not met, the article is not visible.
- Purpose of the rule
* Some articles are private.
* Some articles are shared only with selected persons or groups.
* Group-based visibility is independent from email/account identity.
Account scope
- Login
* Accounts are used to authenticate a user.
* Authentication is tied to an email address and password.
- Rights assignment
* Different accounts can be granted different rights.
* Rights are assigned at account level or in relation to persons/groups,
depending on the access rule for the article.
Person scope
- Data ownership
* A person is the owner of their own articles.
* A person can have multiple linked accounts/emails.
- Shared context
* Other parties may access articles only through the rights/group model.
Groups and persons
- Membership
* Groups contain persons.
* Group membership does not depend on the email used for login.
- Example interpretation
* If a person belongs to a group, then that group relation follows the
person, not a specific email account.
Article model
- Each article has:
* An article type
* Content belonging to that type
* An owner person context
* Access rules based on rights and group membership
- Article types are distinct categories, not free text, so that access can be
handled per type in a structured way.
Security and privacy goals
- Private by default where appropriate
* Not everything is publicly visible.
- Controlled sharing
* Sharing happens via rights and groups, not via open access.
- Person-centric sharing
* Visibility follows persons and groups, not only the account that logs in.
- Separation of concerns
* Login (account/email/password) is separate from data ownership (person).
* This allows one person to be reachable through several emails without
merging all content into one account identity.
Functional expectations
- Account management
* Create account for an email address with a password.
* The email address is fixed for that account.
- Person management
* Represent persons independently of a single account.
* Link multiple emails/accounts to one person where needed.
- Article management
* Create, view, edit, and remove articles for a person.
* Store articles by type.
* Enforce visibility by rights and group membership.
- Group management
* Groups are defined around persons.
* Membership is used for visibility/access decisions.
- Rights handling
* Rights decide what is allowed for an account/requesting party.
* Rights work together with group-based visibility rules.
Non-goals for this version
- This is not a payment system.
- This is not a transaction ledger.
- This is not primarily an account-consumption platform; accounts exist for
login and rights, but persons and their articles are the main content.
Level of detail required from the specification
- Account model
* Fixed email per account.
* Password per email.
* Different rights per account.
- Person model
* Persons as first-class entities.
* Support for multiple emails per person.
- Article model
* Article types.
* Ownership context.
* Rights/group-based visibility.
- Group model
* Person-dependent groups.
* No email-dependent groups.
- Access behavior
* Explicit visibility rules.
* No open global visibility for restricted articles.
This specification intentionally describes what the system is and what rules
it follows, so that later implementation matches the intended model exactly.