# HoloFuel Sync RSM UX Requirements for Beta
###### tags: 'HoloFuel' `requirements` `UX`
## Assumptions
**HoloFuel in the context of Holo has these primary users:**
1. Hosts
2. Publishers
3. Hosted Web Users (includes HOT holders, certificate receivers, developers)
4. Holochain Users (secondary, will include same types as hosted users)
## Use Cases in Scope for this App
1. Login & First-Time Login: Enter Joining Code to Create Account
2. Name the Account
3. Configure or select Persona (not yet in scope)
* We should look at how Phil has done this and model it.
4. View Balances and Notifications on Dashboard
* Available Balance
* View Pending Payments
* Various notifications of pending, actionable, , or declined
* Able to link to send/request
* show last 3 completed transactions on page with link to more
5. Send or Request HF (Transact with HoloFuel)
* Link to KYC process (higher spending or special role)
* Notification of KYC requirement beyond the joining code (think exchanges that allow only 1BTC withdrawal without enhanced KYC) should be visible in the send fuel view until the user completes KYC.
* Further, if a user attempts to send an amount larger than what is allowed without additional KYC, an error message should display with messaging of reqs and link to KYC
6. Respond to incoming payments or request
7. View and Search through past transactions
## Out of Scope
### Publisher Use Cases not Included in this doc
1. Purchase HoloFuel from Reserve Account
2. View Invoices
3. View Cost Data
4. Connect HoloFuel Account used for Hosting
### Host Console Use Cases not Included in this doc
1. Redeem HoloFuel from Reserve Account
2. View Earnings
3. Connect HoloFuel Account used for Publishing
### Not in Scope for Team or Beta
1. Acquire Valid Joining Code (First step in signup, not within App - Catalyst team will have completed within a week or so.)
2. Cancel Initiated Transaction (by user)
## Detailed Use Cases
### View Balances / Default Dashboard
1. Navigate to HoloFuel and login
2. Display Account Name and Persona Name with Cryptocon (clickable to copy hash)
3. Display current available balance
* Available balance should be less all sent funds (self-initiated or accepted requests) and less all fees accrued regardless of transaction being in pending status
* Available balance should not include or add to the balance any pending received funds (requested or accepted) transactions
* Information should be available that informs user of what is and what is not included in available balance
4. See visual badge if there are any pending transactions - link to view of pending (icon could be something like [this](https://thenounproject.com/term/pending/2931154/) and when they exist, we could add the red dot that throughout the app signifies notifications) (This links to the transaction history with filter set for pending transactions. **Pending defined as any initiated transaction that is not completed and any accepted transaction that has not completed.**)
5. See visual badge if there are any new incoming payments or requests for funds that have not been actioned - link to view of actionable transactions (icon could be something like [this](https://thenounproject.com/search/?q=action&i=3451742), again with red dot to signify notification)
6. See visual badge for any recent declined transactions - link to view transaction history with most recent declined transactions filtered for and sorted (icon could be something like [this](https://thenounproject.com/search/?q=transaction%20declined&i=3110987) with red dot for new notifications)
7. See button to Send Funds (icons could be like [these](https://www.dropbox.com/s/zqqmna32dr2rlxc/Screen%20Shot%202020-09-05%20at%2011.21.26.png?dl=0) these -- should be distinct from visual badges above)
8. See button to Request Funds (icons could be like [these](https://www.dropbox.com/s/zqqmna32dr2rlxc/Screen%20Shot%202020-09-05%20at%2011.21.26.png?dl=0) these -- should be distinct from visual badges above)
9. Display up to the last 3 completed transactions with a link to see more (this links to transaction history view with the filter set for completed transactions and latest completed at the top. **Completed transactions are defined as those that have been saved to the sourcechain with all signatures of the agents involved.**)
10. NOT IN SCOPE: If account has a credit line, display avalailable credit somewhere in the dashboard but less prominant than other items, so maybe text only
### Send or Request HoloFuel
1. Navigate to Transact HoloFuel screen with appropriate choice already selected (send or request) and display an option to change to the other but make the change less of a visual pull than the next step...
2. Enter amount
* KYC Notification should display on the send HoloFuel view (if they have not already completed process) that notifies user that for sending more than 500k HoloFuel additional KYC is required and provides link. *****It would be fantastic if this were designed so that the AMOUNT COULD CHANGE WITHOUT A FULL DNA UPGRADE (and still not be only in the UI due to security issues, as regulatory defines this amount in EUR or USD so our amount that requires higher levels of KYC will fluctuate dependent on exchange prices*****
4. Enter HF account
5. Display the proposed transaction and request Confirmation from user
6. Redirect after confirmation to a view with the resulting transaction details in past tense (ie. authorised to send or receive) - give options on this final view to 1) send funds (Icon), 2) request funds (Icon), 3) view pending transactions, or 4) return to HoloFuel Dashboard
### Respond to incoming Payments and Requests
1. Navigate to a transaction view that is filtered only for transactions that require the user to take action.
2. Group and/or clearly distinguish transactions in view by Requests for Payment and Incoming Payments - This was confusing to users.
3. Display the following per transaction
* Initiated by (Cryptocon / Persona Name)
* Payment Type (Requesting or Sending)
* Amount
* Note
4. User can Take Action on each transactions
* For Requests of Funds
* Pay Request
* Reject Request
* For Promises of Funds
* Accept Payment
* Reject Payment
5. After an item is actioned it should disapear from this view.
6. If there are no items to display in this view, display an image like [this]( https://www.dropbox.com/s/1u8dmcovlq758xk/Screen%20Shot%202020-09-19%20at%2013.33.37.png?dl=0) and maybe the icons from the dashboard for links to Pending Transactions, View History, Send HF, & Request HF.
### View/Search Historical Transactions
* Transactions should display in a data table with the following:
* default date range is last 7 days, can be changed to last 30 days
> [Should we have any limits to date range based on indexing in source chain?] @artbrock
* filter/sort
* pagination
* count of total records displayed (ie. 15 of 27 records)
* Transactions rows should include the following:
* Date
* Amount
* From
* To
* Transaction Status (pending, complete, declined, expired ?? @artbrock )
* Initiated by
* Note
* Fee Amount
1. Navigate to Transaction History (from basic nav, user enters with no filter set so that all transactions display.)
2. User should see simple and obvious way to set the following filters (preference would be for include/exclude - so for example, I could display all except for completed or all except for the ones I initiated)
* Show Completed
* Show Pending
* Show Declined
* Show My Initiated
* Requires Action
3. User should be able to sort by all fields in the data table.
> [Can you Confirm?] @artbrock
* Beta requirements do NOT require saved filter/sorts for this page (exception is that when we link here from dashboard it is often with preset filter sorts)
## Top Level Navigation Menu
1. Dashboard (default upon entry)
2. Send Funds
3. Request Funds (same view as send with small variation)
4. Actionable Items or Inbox
5. Transaction History (default view using a data table like [this](https://vuetifyjs.com/en/components/data-tables/) with filter/sort, shows all)
**Other views not in top level navigation but linked from dashboard are based on this same view**
* Pending (specialised version of view with data table only shows pending)
* Declined (specialised version of view with data table only shows declined)
* Completed (uses default view with filter sort, sorted for completed?)
7. Settings
* Enter Joining Code
* Set Account Name (may want to compound with persona name for transactions -- replaces nickname)
* Select Persona
* Enter KYC Validation
## Other Requirements
1. Transactions that are not actioned by the receiving party within 30 days expire.
* They stop displaying in the receiver view in Actionable Transaction
* They stop being deducted from the sender's balance if transaction was a send promise
* They stop being shown as a pending transaction in the transaction list
* @artbrock Do they disappear completely from the initiator's history or do we mark the status as expired?
## Related Documentation
[Tech Specs](https://hackmd.io/a539oMsTRZy0iXfUZY_EIw?both)
[Testing](https://holo.hackmd.io/FdCS0P6sTKeCAsV2mYYczA)