j3k0 / ganomede-users

Ganomede Users
0 stars 0 forks source link

Winter 2016-2017 Accounts Grand Upgrade (Wagu16) #9

Closed j3k0 closed 4 years ago

j3k0 commented 7 years ago

Below are the raw requirements approved by the client. This includes both client-side and server-side changes. Let's split this up into incremental changes.

After the requirements, I included some design considerations.

Core

Requirements

ID Group In order to... as a... I want to...
#R01 In order to centralize user accounts as a publisher I want my users to use a single Goliath account shared accross all apps
#R02 In order to play Triominos as an existing player I want my account to remain the same, only being rebranded a "Goliath" account
#R03 In order to play Triominos as a new player I want to register a new Goliath account
#R04 In order to understand Goliath accounts as a Triominos user I want minimal explaination on the login and signup screens
#R05 In order to play Word Search as a Triominos player I want to use my existing Goliath account
#R06 In order to play Word Search as a new player I want to register a new Goliath account
#R07 In order to activate Goliath accounts as Triominos publisher I want to submit a Triominos update
#R08 In order to play Triominos as a Word Search player I want to use my existing Goliath account
#R09 In order to understand Goliath accounts as a Word Search user I want minimal explaination on the login and signup screens
#R10 In order to appear the same on all apps as a user I want my avatar to be shared accross apps
#R11 In order to login with Facebook as a Triominos user I want to approve the Triominos facebook app
#R12 In order to login with Facebook as a Word Search user I want to approve the Word Search facebook app
#R13 In order to share data accross apps as a user I want my facebook connections from Triominos and Word Search to be linked together
#R14 In order to be incentivized to play Word Search as a Triominos user I want to receive triominos' gold coins when I login for the first time in Word Search
#R15 In order to change/recover my password as a user I want to receive an email with a new random password
#R16 In order to understand what is being said as a user I want to see all languages (including my own) next to each others in the email I receive

Everything that isn't in the list above hasn't been quoted for. Those are the only requirements.

NON Requirements

The below are things that we thought of as requirement. Those requirements added complexity might have a major impact on cost and schedule. They have been substitued with simpler solutions (even though less optimal).

ID In order to... as a... I want to...
#Nr01 In order to benefit from my coins as a Triominos user I want to use Triominos coins from Word Search (and vice versa)
#Nr02 In order to change/recover my password as a user I want to receive an email with a link to a reset-password page
#Nr03 In order to change my password as a user I want the reset-password page to ask me twice about the new password
#Nr04 In order to feel confident as a user I want the reset-password page to have a minimum of style
#Nr05 In order to understand what is being said as a user I want the email I receive to be in my native language

Ground Work (#F0)

Many features below require a general upgrade of user profile handling:

We do not want to duplicate the Ground Work cost on every feature that needs it. So it is extracted and only indicated as a required dependency for the features that needs it.

Guest Upgrade (#F1)

This feature allows a user to be promoted from a guest to a registered user, thus being able to make purchases and login from a new device with his account.

Requirements

ID Group In order to... as a... I want to...
#R49 #F1a In order to edit in my account info as an user I want to use a form similar to the sign-up form
#R20 #F1a In order to become a registered user as a guest user I want to see an "Upgrade Your Account" dialog when I click the profile button (see below)
#R21 #F1b In order to fill in my account info as an upgrader(*) I want to use a form similar to the sign-up form
#R22 #F1b In order to accept a guest upgrade as a shareholder I want the user to fill-in in their email address
#R45 #F1b In order to prevent data loss as an upgrader I want to wait for the migration to be complete before using the newly registered account
#R46 #F1b In order to prevent inconsistencies as an upgrader I want the app to forget everything it knew about the old "me" (the guest)

Notes:

"Upgrade Your Account" dialog

It is a dialog opened when clicking the "profile" button from home screen. Here's the content:

As a guest user, you don't have a profile

More Fields (#F2)

Requirements

Notes:

Group #F2a - Core & Signup Screen

ID Group In order to... as a... I want to...
#R17 #F2a In order to reach users the correct way as a shareholder I want to force my users to fill in their country from the sign up form
#R18 #F2a In know more about the users as a shareholder I want them to optionnaly fill in their year of birth from the sign-up screen
#R19 #F2a In order to enforce valid input as a shareholder I want the country to be selected by the user from a list of options (see below)
#R47 #F2a In order to enforce valid input as a shareholder I want the year of birth to be selected by the user from a list of options (see below)

Group #F2b - View Profile Screen

ID Group In order to... as a... I want to...
#R33 #F2b In order to view my info as a user I want to see my country in the profile screen
#R34 #F2b In order to view my info as a user I want to see my year of birth in the profile screen

Group #F2c - Edit Profile Screen

ID Group In order to... as a... I want to...
#R31 #F2c In order to update my country as a user I want to access a form where I can edit my country from the profile screen
#R32 #F2c In order to update my year of birth as a user I want to access a form where I can edit my year of birth form from the profile screen
#R48 #F2c In order not to repeat my location twice as a user I want the current version's free-text 'location' to be replaced by the country selector

Group #F2d - Facebook Import

ID Group In order to... as a... I want to...
#R43 #F2d In order to know Facebook users country as a shareholder I want to fetch locations from the users Facebook profile
#R44 #F2d In order to know Facebook users year of birth as a shareholder I want to fetch dates of birth from the users Facebook profile

List of Countries options

Each country's name will be writen in the country's main language (or slash separated, like BELGIE / BELGIQUE).

Design will be similar to the language selection screen.

Editing the location from the profile screen will switch from a free-text to the country selector.

Year of Birth entry

The year of birth will be selected from a list of years (ranging from current year to 120 years ago).

Design will be similar to the language selection screen.

Edit Profile

This will open a screen similar to the Sign Up screen with the following differences:

Note: "Country" will now replace the current "Location" field that used to be a free text in the profile screen.

NON Requirements

Change of Username (#F3)

ID Group In order to... as a... I want to...
#R39 #F3a In order to change my username as a user I want to access an edit username form from the profile screen.
#R50 #F3a In order to realize the importance of my decision as a renamer(*) I want to see a confirmation dialog before my change is submitted
#R41 #F3b In order to invite a renamer(*) as a player that used to enjoy playing with him I want to user either the initial username (that I remember) or the new username (after I remember it)
#R24 #F3b In order to keep my games as an renamer(*) I want in-progress games to be migrated to my new username
#R27 #F3b In order to keep my invitations as an renamer(*) I want pending invitations to be migrated to my new username
#R28 #F3b In order to keep my chat history as an renamer(*) I want it to be migrated to my new username
#R29 #F3b In order to keep my coins and upgrades as an renamer(*) I want them to be migrated to my new username
#R30 #F3b In order to keep my games archive as an renamer(*) I want them to be migrated to my new username

Note:

E-mail with MailChimp (#F4)

ID Group In order to... as a... I want to...
#R35 #F4x In order to opt-in for e-mail notifications as a user I want to tick a check a box in the sign up screen
#R36 #F4x In order to send e-mail notifications as a marketer I want to use MailChimp
#R37 #F4x In order to save time as a marketer I want opted-in users emails to be added to a MailChimp list automatically
#R40 #F4x In order to protect my MailChimps' API access as a shareholder I want the link to MailChimp to be setup on the server
#R42 #F4x In order to know Facebook users email as a shareholder I want to fetch emails from the users Facebook profile

Cross Requirements

Those are requirements to add when multiple features from above are wanted.

ID Group In order to... as a... I want to...
#R23 #F5a In order to accept a guest upgrade as a shareholder I want the user to fill-in their country and (optionnally) date-of-birth
#R25 #F5b In order to select a personnal username as an upgrader(*) I want a editable username field in the "Upgrade Your Account" form
#R26 #F5b In order to keep my username as an upgrader(*) I want the username field in the "Upgrade Your Account" form to be prefilled with my current username, I can keep it unchanged
#R38 #F5c In order to send targeted emails as a marketer I want opted-in users to be saved in my MailChimps list with their location

Notes:

Design considerations

Account sharing across apps

My idea is to have multiple ganomede-users servers with parent-child relationships.

Here are some illustrations.

This will allow to create complex settings with data specific to an app, shared across all app, or shared with just a group of apps.

j3k0 commented 7 years ago

Setting up a GitHub project for this (let's see if this thing is useful).

https://github.com/j3k0/ganomede-users/projects/1