SHA256
169 lines
5.8 KiB
Plaintext
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.
|