-
Notifications
You must be signed in to change notification settings - Fork 7
Requirements Tracking Backend
Before getting into user requirements it is necessary to define different user types of the system. The system has 4 types of users: Guest, Basic User, Trading User (Trader) and Admin. The roles of these user types are briefly explained in the glossary and will be defined explicitly throughout the following requirements.
In this section, the word "user" will refer to any user of types Basic User, Trader or Admin. The words "guest", "trader" or "admin" will be used when a requirement is specific to only one type of user.
The reader is highly encouraged to read the glossary before reading the requirements as the meanings of terms used in this document might differ from the common knowledge. The reader may also visit User Types to see a summary of "who can do what".
-
1.1.1.1. Guests shall be able to sign up by providing their e-mail address, name, surname, location and choosing a password. If the guests wants to register as a trading user, they shall also provide IBAN of their bank account. Location information shall be given using Google Maps.
-
1.1.1.2. Guests should be able to sign up with their Google account.
- 1.1.2.1. Users shall be able to sign in with their e-mail and password.
- 1.1.2.2. Users should be able to sign in with their Google account.
- 1.1.3.1. Each user shall have a profile page.
- 1.1.3.2. Users' prediction success rate for each parity shall be visible on their profile page. There should be a lower limit to the number of predictions for the success rate to be visible on the profile page.
- 1.1.3.3. Users' public portfolios shall be shown on their profile page.
- 1.1.3.4. Users shall be able to set their profile to be public or private.
- 1.1.3.5. Public profiles shall be visible to all users and guests.
- 1.1.3.6. If a user profile is private, then the content produced by that user shall only be visible to its followers.
- 1.1.3.7. Prediction success rate shall be visible to all users and guests even if a user's profile is private.
- 1.1.4.1. Users shall be able to follow each other. To follow a user who set his profile to be private, a follow request shall be sent first.
- 1.1.4.2. Users shall be able to deny the following requests came from other users.
- 1.1.4.3. Users shall be able to share their ideas as an article.
- 1.1.4.4. Users shall be able to write comments below the articles of other users.
- 1.1.4.5. Users shall be able to rate articles of other users by clicking the "like" button.
- 1.1.4.6. Users shall be able to write comments about trading equipment.
- 1.1.5.1. Users and guests shall have an “Events” section. In this section, users and guests shall be able to view economic events as a table with columns: 'time', 'importance level', 'country base', 'actual', 'previous' and 'forecast'. See example.
- 1.1.5.2. Users and guests should be able to filter economic events by their importance level and country base.
- 1.1.5.3. Users and guests should be able to search for economic events.
- 1.1.5.4. Users shall be able to follow economic events. A user who is following an event should be notified after the event happened.
- 1.1.6.1. Users shall have one or more portfolios. Empty portfolios may exist.
- 1.1.6.2. Users shall be able to rename their portfolios.
- 1.1.6.3. Users shall be able to add or remove parities from their portfolios.
- 1.1.6.4. Users shall be able to follow each other's portfolios. Followed portfolios shall be shown in user's portfolios section.
- 1.1.7.1. Users and guests shall be able to view conversion ratio, previous close, percentage and amount change according to the previous close, day's range and moving averages for a parity.
- 1.1.7.2. Users and guests shall be able to read user comments about trading equipment.
- 1.1.7.3. Users shall be able to make predictions about the parities for the day. A prediction shall be either "will increase" or "will decrease". The result of the prediction is determined by comparing the last close and today's close of the ratio.
- 1.1.7.4. Users shall be able to set alerts for certain ratios of parities. Users shall be notified when the target ratio is met.
- 1.1.8.1. Users shall have a "My Investments" section which contains information about their assets that are physically held in the platform and also manual investments which they made outside of the platform.
- 1.1.8.2. Users shall be able to enter manual investments.
- 1.1.8.3. Traders shall have to verify their e-mail address before making an investment.
- 1.1.8.4. Traders shall be able to buy trading equipment by selling another equipment from their assets if a conversion exists between those equipments. For example, a trader could sell Turkish liras (TRY) to buy United States dollars (USD) whereas he couldn't directly convert his golds to Apple stocks because such a conversion does not exist.
- 1.1.8.5. Traders shall also have an option of paying with a credit card instead of selling their assets when making an investment.
- 1.1.8.6. Traders shall be able to give buy orders for a desired ratio. When the current price goes below the desired ratio, the system shall make the buy automatically.
- 1.1.8.7. Traders shall be able to give stop/loss orders by specifying a maximum loss. The system shall automatically reverse the investment when the amount of lost goes above the maximum loss.
- 1.1.9.1. Users shall have a profit/loss section. They shall be able to see their profit/loss amount in the currency of their choice. Users' manual investments and assets shall be both accounted when calculating their profit/loss.
- 1.1.9.2. Users and guests shall not be able to see the profit/loss of other users.
- 1.1.10.1. Users and guests shall be able to search for trading equipment, parities and other users. The search algorithm shall consider all information available in user profiles (such as portfolios) and shall retrieve semantically similar results to the query.
- 1.1.10.2. Users and guests shall be able to filter users around a location when searching.
- 1.1.11.1. Users shall receive article and trading equipment recommendations based on their investments, users and events they follow.
- 1.1.12.1. Admins shall have an admin panel to administrate the platform.
- 1.1.12.2. Admins shall be able to add new trading equipment and parities.
- 1.1.12.3. Admins shall be able to ban or delete users. Banned users shall not be able to sign in.
- 1.1.12.4. Admins shall be able to delete articles and comments.
- 1.1.12.5. Admins shall be able to add or delete events.
- 1.2.1.1. The system shall support sharing ideas as an article.
- 1.2.1.2. The system shall support commenting and rating ideas of other users.
- 1.2.1.3. The system shall support commenting about trading equipment.
- 1.2.1.4. The system shall let users follow other users and trading equipment.
- 1.2.1.5. The system shall provide an alert mechanism which lets traders to get notified about certain levels of trading equipment.
- 1.2.1.6. The system shall provide an alert mechanism which lets users to get notified about other users activities, when they follow another user.
- 1.2.2.1. The system shall provide a recommendation mechanism recommending articles, portfolio or trading equipment to the users based on their histories.
- 1.2.2.2. The system shall let users to make predictions about trading equipment.
- 1.2.3.1. The system shall contain a searching mechanism that lets users to search users, trading equipment and economic events.
- 1.2.3.2. The searching mechanism shall consider all the information available in user profiles and trading equipment.
- 1.2.3.3. The system shall allow the semantic search which enables users to make a search by using user defined tags in order to make more specific search.
- 1.2.3.4. The system shall support location-based search.
The system shall support following equipments and possible conversions between them:
- 1.2.4.1. Trade indices such as S&P 500, Dow 30, DAX...
- 1.2.4.2. Stocks such as Apple, Alibaba, IBM...
- 1.2.4.3. ETFs such as SPDR S&P 500, SPDR DJIA, iShares Russel 2000...
- 1.2.4.4. Commodities such as Gold, Natural Gas, Silver...
- 1.2.4.5. The application should support chief monetary units in the world. Currencies such as Euro, American Dollar, Turkish Lira...
- 1.2.4.6. Funds such as Pimko Total Return, Vanguard Total Stock Market Index Fund, American Funds Growth Fund of America...
- 1.2.4.7. Bonds such as Euro Bund, UK Gild, Japan Government Bond...
- 1.2.4.8. Cryptocurrencies such as Bitcoin, Ethereum, XRP...
- 2.1.1. The website and the mobile application shall use secure HTTP (HTTPS) for all transfers.
- 2.1.2. The website shall be secure against SQL injection, cross-site scripting, and cross-site request forgery attacks.
- 2.1.3. User passwords shall be stored in the database using a secure hashing algorithm.
- 2.1.4. The system should backup periodically.
- 2.2.1. The system shall be able to handle 1000 HTTP requests per second.
- 2.2.2. The system shall be capable of serving 1000 users at the same time.
- 2.2.3. The system shall respond to search queries in less than 3 seconds.
- 2.3.1. The website and the mobile application shall be available in English.
- 2.3.2. The project should work on any web browser.
- 2.3.3. The application shall work on Android 4.4 and later.
- 2.3.4. The project shall be provided for both mobile and web platforms.
- 2.3.5. The system should work 7/24 with no more than 1% downtime.
- 2.3.6. The project should contain auxiliary features for disabled people.
- 2.3.7. The system shall use UTF-8 character encoding for all texts.
- 2.4.1. The W3C Web Annotation Data Model and W3C Web Annotation Protocol shall be used for annotations.
- Requirements
- Mockups
- User Types
- Personas, User Stories and Acceptance Criteria
- Use Case Diagrams
- Class Diagram
- Sequence Diagrams
- Milestone Report #1
- Project Plan
- System Manual
- User Manual
- TrAiders Annotation Server