mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-11-04 03:07:58 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
 | 
						|
“SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be
 | 
						|
interpreted as described in [RFC 2119](https://tools.ietf.org/html/rfc2119).
 | 
						|
 | 
						|
"entity" or "entities" are to be interpreted as [Doctrine Objects](https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/working-with-objects.html).
 | 
						|
 | 
						|
**Bold** words define a unique type.
 | 
						|
 | 
						|
# requiremts
 | 
						|
 | 
						|
## interfaces
 | 
						|
The application MUST contain the following interfaces:
 | 
						|
* HTML
 | 
						|
* JSON
 | 
						|
 | 
						|
## actors
 | 
						|
 | 
						|
### user
 | 
						|
The application MUST provide the following functions:
 | 
						|
* delete user
 | 
						|
* register user
 | 
						|
* modify user
 | 
						|
* create user (child)
 | 
						|
* login
 | 
						|
* logout
 | 
						|
 | 
						|
A **user** MUST have one **node**.
 | 
						|
 | 
						|
A **user** MUST be a **source**.
 | 
						|
 | 
						|
### law
 | 
						|
A **law** MUST belong exclusive to a **node**.
 | 
						|
 | 
						|
A **law** MUST contain one of each of **right** types one time.
 | 
						|
 | 
						|
#### right
 | 
						|
A **right** MUST NOT be a **source**.
 | 
						|
 | 
						|
A **right** MUST belong to a **law**.
 | 
						|
 | 
						|
A **right** MUST be of one of the following types:
 | 
						|
* read
 | 
						|
* write
 | 
						|
* administrate
 | 
						|
 | 
						|
#### permission
 | 
						|
A **permission** MAY have a father from which it inherit.
 | 
						|
 | 
						|
A **permission** MUST belong to a **right**.
 | 
						|
 | 
						|
A **permission** MUST allow blacklisting.
 | 
						|
 | 
						|
A **permission** MUST allow whitelisting.
 | 
						|
 | 
						|
A **permission** MUST allow that it applies to the parent **relative collection** s of the rule set.
 | 
						|
 | 
						|
A **permission** MUST allow that it applies to the child **relative collection** s of the rule set.
 | 
						|
 | 
						|
A **permission** MUST contain a **collection** on which the rule set applies.
 | 
						|
 | 
						|
### node
 | 
						|
A **node** MUST have one **source**.
 | 
						|
 | 
						|
A **node** MUST contain a parent **relative collection**.
 | 
						|
 | 
						|
A **node** MUST contain a children **relative collection**.
 | 
						|
 | 
						|
A **node** MAY be a member of one or more **relative collection** s.
 | 
						|
 | 
						|
A **node** MAY be a member of one or more **collection** entity.
 | 
						|
 | 
						|
A **node** MUST have a **law**.
 | 
						|
 | 
						|
A **node** MUST have a **history**.
 | 
						|
 | 
						|
#### relative collection
 | 
						|
 | 
						|
A **relative collection** MUST belong to a **node**.
 | 
						|
 | 
						|
A **relative collection** MUST contain **node** s.
 | 
						|
 | 
						|
A **relative collection** MUST provide the following functions:
 | 
						|
* get all relatives
 | 
						|
* get specific relative
 | 
						|
* get relatives
 | 
						|
* get relatives of generation
 | 
						|
 | 
						|
### source
 | 
						|
A **source** MUST have one node.
 | 
						|
 | 
						|
A **source** MUST be an entity.
 | 
						|
 | 
						|
A **source** MUST contain a file fabric.
 | 
						|
 | 
						|
#### entities
 | 
						|
Sources MUST be on of the following entities:
 | 
						|
 | 
						|
entity|attributes
 | 
						|
--- | ---
 | 
						|
user|username,password,identity
 | 
						|
identity|names,addresses
 | 
						|
address|
 | 
						|
date|datetime
 | 
						|
name|string
 | 
						|
birthday|date
 | 
						|
death|date
 | 
						|
text|text(varchar)
 | 
						|
collection|nodes
 | 
						|
live|birthday,death
 | 
						|
 | 
						|
#### file
 | 
						|
 | 
						|
A **file** MUST be on of the following types:
 | 
						|
 | 
						|
* HTML
 | 
						|
* JSON
 | 
						|
* XML
 | 
						|
* TEXT
 | 
						|
* CSV
 | 
						|
* JPG
 | 
						|
* MD
 | 
						|
 | 
						|
It SHOULD be possible to export a **file** to one or more other **file** s.
 | 
						|
 | 
						|
It MUST be possible to edit a **file**.
 | 
						|
 | 
						|
IT MUST be possible to save a **file**.
 | 
						|
 | 
						|
#### collection
 | 
						|
A **source** MAY contain other **nodes**.
 | 
						|
 | 
						|
### history
 | 
						|
A **history** MUST log all of the actions which happen to a **node**.
 | 
						|
 | 
						|
A **history** MUST exclusive belong to a **node**.
 | 
						|
 | 
						|
A **history** MUST allow to give the state of a **node** of a special date back.
 |