# Fapzay
Join the fun on Fapzay and stand a chance to get away with something huuuugge!
## How does it work?
1. A new pool of users will be opened every midnight at 00h:00m:00s and will be closed at 22:00:00. You join this pool with a very small fee.
2. If for example, `N` people have joined the pool at the end of the day, 1 person will be selected `randomly` to go away with all of the money contributed. For example,
```
begin:
total number users = 100
fee per user to join the pool = 50frs
=> total amount in the pool = 100 * 50 = 5,000frs
Then, winner = RAMDON person
end
```
3. A new pool will be opened at midnight.
## Authentication
### Registration
- Users register with a phone number and password.
- The phone number will be verified by SMS with a code valid for 3 minutes.
- The user can request a new code a maximum 3 times within 10 minutes. After which, a cool down of 10 minutes must be enforced.
### Login
- Users log in with phone number and password.
### Set username
- After login, the user will set up their username if it has not been set before.
- The user cannot proceed without a username.
## Wallet
A screen that allows the user to manage their funds.
- It should show the current amount in the wallet.
- It should provide means to deposit and withdraw funds
- It provides means to deposit and withdrawal is via mobile money
- Deposit: It takes the amount and phone number to take funds from.
- Withdraw: It takes the amount and phone number to send the funds to.
- Each of these transactions should show appropriate loaders and notifications.
- (Promotion): Every 10 pools you join, you get 500 back cfa.
- Show a progress to win this promo!
- It also lists the users transactions. `deposit, withdraw, join pool, promo`
## Pools
List all the pools
- The details of each line shoud include
- status: (open/closed/cancelled)
- date
- pool fee: Fee to join the pool
- pool total: The total prize in the pool. => number of users * fee
- won/lost: Whether the user won the pool or not.
- Clicking on the pool should take you to the pool details page.
- A toggle to see only the pools the user has joined before.
## Pool Detail
This page shows the details of the pool including
- Date created
- status: open/closed
- pool fee
- pool total
- won/lost (a pool that you didn't join should not have this)
- The members of the pool
- A share buton (to share the results)
## Home
This page shows the current open pool
- It should show the time left till the pool closes
- It should show the fee to join.
- Provides a means for the user to join the pool
- The fee will be taken from the users wallet and should show error if not enough funds or if something goes wrong.
- Once joined, ther user should see the details of the pool (see #Pool Details above)
- If the poool is closed (time elapsed), show if the user has won or not
## Leaderboard
This page shows a list of top ranking users. Display ther usernames and their rank
You can rank by
- pools joined
- amount earned (default)
**AND** sort by
- week (default)
- month
- all time
## Profile and Settings
Profile:
- Show the total number of pools joined
- Show the total amount earned to date
- Show profile picture
- Show username
Settings:
- Change phone number
- Change password
- Change username
- anonymous
- Profile: If ON, you can't see the users profile
- username: If ON, you see a hashed version of the useranme
- Notification toggle: (default for all is OFF)
- User joined pool: Notifies you if a user joins the pool you are in
- New pool opened: Notifies you every time a new pool is opened
- Pool closed: Notifices you when the pool you joined is now closed
- etc..