# Requirements
## 1. Functional Requirements
### 1.1 User Requirements
#### 1.1.1 Register & Login
* 1.1.1.1 Users shall be able to register with a unique username, e-mail address, and password.
* 1.1.1.2 User passwords shall meet safety criteria (min length, uppercase-lowercase letters, special symbols).
* 1.1.1.3 Users shall be able to log in using their registered credentials.
* 1.1.1.4 Users should have the option to reset their password via e-mail verification.
* 1.1.1.5 Users shall be able to log out from the system.
#### 1.1.2 User Types
##### 1.1.2.1 Global User
* 1.1.2.1.1 Global user shall be able to view posts.
* 1.1.2.1.2 Global user shall be able to view exchange rates.
* 1.1.2.1.3 Global user shall be able to view user profiles.
* 1.1.2.1.4 Global user shall be able to search for users by their usernames.
* 1.1.2.1.5 Global user shall be able to semantic search for posts.
* 1.1.2.1.6 Global user shall accept the Terms of Use and Privacy Policy in order to register.
* 1.1.2.1.7 Global user shall enter their e-mail, username and a password in order to register.
* 1.1.2.1.8 Global user shall be able to view recent news about financial markets.
##### 1.1.2.1.1 Registered User
* 1.1.2.1.1.1 Registered users shall be able to create posts.
* 1.1.2.1.1.2 Registered users shall be able to like posts.
* 1.1.2.1.1.3 Registered users shall be able to write comments to posts.
* 1.1.2.1.1.4 Registered users shall be able to bookmark a post.
* 1.1.2.1.1.5 Registered users shall be able to follow other users on the platform.
* 1.1.2.1.1.6 Registered users shall be able to view her/his followers.
* 1.1.2.1.1.7 Registered users shall be able to remove her/his followers.
* 1.1.2.1.1.8 Registered users shall be able to view the content posted by followed accounts.
* 1.1.2.1.1.9 Registered users shall be able to view his/her bookmarked posts.
* 1.1.2.1.1.10 Registered users should be able to add graphs to their posts.
##### 1.1.2.1.1.1 Admin
* 1.1.2.1.1.1.1 An admin shall be able to ban user accounts.
* 1.1.2.1.1.1.2 An admin shall be able to remove(ban) posts.
* 1.1.2.1.1.1.3 An admin shall be able to remove(hide) comments on posts.
#### 1.1.3 Profile Preferences
* 1.1.3.1 Users shall be able to view profile information.
* 1.1.3.2 Users shall be able to update her/his profile information.
* 1.1.3.3 Users shall be able to view films watched by him/her.
* 1.1.3.4 Users should be able to add/remove a profile photo.
* 1.1.3.5 Users should be able to change their username.
* 1.1.3.6 Users should be able to have a badge.