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.