Designing User Journey (Cont'd)

We continue through the user journey.

gohkhoonhiang
Apr 25, 2023 | 24 mins read

User Journey Design (Continued)

In the previous article, we have covered a few user journeys related to these functions:

  • Tag-based Time Tracking
  • Manage Tags
  • Manage Contacts
  • Manage Currencies
  • Manage Billing and Invoicing
  • Manage Templates
  • Manage Sequences
  • Manage Invoices

In this article, we will continue with the remaining functions:

  • Manage Transactions
  • Manage Receipts
  • Manage Documents
  • Manage Taxation
  • Manage Charts
  • Manage Recurring Tasks
  • Manage System Configs
  • Manage Users

Manage Transactions

While most Transactions in the system are generated as a result of a Receipt, there may be instances where there is no documentation proof available but the payment has indeed happened. Whatever the reason is and whether the legality of it is questionable, as an app, we will not make any assumption and simply still offer the capability to manually record a Transaction.

Create Transaction

The user can create an Income Transaction or an Expense Transaction.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Transaction
    section Create Transaction
        Go to Transactions: 5: User
        Click "New": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Create Transaction journey.

Edit Transaction

Normally, there should be no use case for editing a Transaction, especially one that is generated due to the generation of a Receipt. However, the user should be allowed to edit an entry in the unlikely event that the values are entered incorrectly. We assume that the user is absolutely certain of the impact of it, especially if the amount doesn’t match the corresponding Receipt.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Transaction
    section Edit Transaction
        Go to Transactions: 5: User
        Click "Edit": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Edit Transaction journey.

Reverse Transaction

In the event that there is a refund of payment, the Transaction created for it can be reversed. This will create a new entry that offsets the original amount. We allow the user to input the amount to reverse, because it is possible that a partial refund has been made instead of the full amount.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Reverse Transaction
    section Reverse Transaction
        Go to Transactions: 5: User
        Click "Reverse": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Reverse Transaction journey.

Delete Transaction

Normally, deleting a Transaction will not be allowed so that the transactions are properly accounted for. Instead, she should use the Reverse function to create a corresponding entry to offset the amount accordingly. However, the user should be allowed to delete an entry that is accidentally created if she’s absolutely certain of the impact of it.

Note that if the Transaction is generated due to the generation of a Receipt, then there is an association constraint and the user will not be able to delete this Transaction entry and must use the Reverse function or Void Receipt function.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Transaction
    section Delete Transaction
        Go to Transactions: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Transaction journey.

Manage Receipts

Generate Income Receipt

After the user has issued an Invoice to her client and has received payment, she can generate a Receipt and a corresponding Income Transaction for the payment. This will be done in the Invoices page by using the “Generate Receipt” function.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Generate Receipt
    section Initiate Generation
        Go to Invoices: 5: User
        Click "Generate Receipt": 5: User
    section Configure Receipt
        Select Receipt Config: 5: User
        Input Fields: 5: User
    section Preview and Generate
        Preview Receipt: 5: User
        Generate: 5: User

Generate Receipt journey.

Edit Income Receipt

Because the generation of a Receipt will result in an Income Transaction being created, and there might have been other Transactions created in between the generation and now, it is not possible to simply edit the Receipt and the Income Transaction without messing up the Transactions amount summation.

For this reason, we will not allow the user to directly edit an existing Receipt.

Void Income Receipt

Instead, she will have to void it and generate the Receipt again. What happens is that the void action will also reverse the Income Transaction, so that when she re-generates the Receipt, it will not result in double entry of the income.

To make it more convenient, after voiding the Receipt, the user has the option to immediately re-generate a new one without going to the Invoices page and go through the Generate Receipt journey all over again.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Void and Regenerate Receipt
    section Void Receipt
        Go to Income Receipts: 5: User
        Click "Void": 5: User
        Confirm: 5: User
    section Regenerate Receipt
        Click "Regenerate": 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Void and Regenerate Receipt (cont'd)
    section Configure Receipt
        Select Receipt Config: 5: User
        Input Fields: 5: User
    section Preview and Generate
        Preview Receipt: 5: User
        Generate: 5: User

Void and Regenerate Receipt journey.

Upload Income Receipt

For the case where the user receives payment via a third-party provider, and the Income Receipt is generated by the provider, the user can upload the document and the system will create a corresponding Income Transaction.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Upload Income Receipt
    section Upload Income Receipt
        Go to Income Receipts: 5: User
        Click "Upload": 5: User
        Input Fields: 5: User
        Select File: 5: User
        Confirm: 5: User

Upload Income Receipt journey.

Delete Income Receipt

The user may have accidentally uploaded an Income Receipt and needs to delete it. In this case, the user can do so via the Delete function, and the system will automatically create an offset Transaction for the deletion.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Income Receipt
    section Delete Income Receipt
        Go to Income Receipts: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Income Receipt journey.

Upload Expense Receipt

On the other hand, the user may also have expenses and want to upload an Expense Receipt from the provider. The user can upload the document and the system will create a corresponding Expense Transaction.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Upload Expense Receipt
    section Upload Expense Receipt
        Go to Expense Receipts: 5: User
        Click "Upload": 5: User
        Input Fields: 5: User
        Select File: 5: User
        Confirm: 5: User

Upload Expense Receipt journey.

Delete Expense Receipt

The user may have accidentally uploaded an Expense Receipt and needs to delete it. In this case, the user can do so via the Delete function, and the system will automatically create an offset Transaction for the deletion.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Expense Receipt
    section Delete Expense Receipt
        Go to Expense Receipts: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Expense Receipt journey.

Manage Documents

Documents are automatically generated by the system, or uploaded by the user. These are raw files as a result of the actions mentioned earlier, so there is no Create, Update and Delete action available. If she needs to delete an uploaded Receipt, then it needs to be done through the Delete Income Receipt or Delete Expense Receipt journey. This is to ensure that the corresponding Transaction for each Document is properly accounted for.

However, the user can have a view of all the generated or uploaded Documents and download the raw files from a single page. Since the Documents may be tagged when they are generated or uploaded, she can also filter by Tags to download the raw files.

Download Documents

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Download Documents
    section Download Documents
        Go to Documents: 5: User
        Click "Download": 5: User
        Input Filters: 5: User
        Confirm: 5: User
        Save Files: 5: User

Download Documents journey.

Tag Documents

Additionally, the user may also tag the Documents independently from the corresponding Invoice or Receipt for further categorisation.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Tag Documents
    section Tag Documents
        Go to Documents: 5: User
        Click "Tag": 5: User
        Input Tags: 5: User
        Confirm: 5: User

Tag Documents journey.

Manage Taxation

Create Tax Table

For the purpose of tax estimation, the user can create a Tax Table with the relevant Tax Tiers and Tax Deductibles. This is a single user journey where the Tax Table, its Tiers and Deductibles are rendered in a single page so that the user does not have to navigate between multiple pages to setup everything.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Tax Table
    section Create Tax Table
        Go to Tax Tables: 5: User
        Click "New": 5: User
        Input Fields: 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Tax Table (cont'd)
    section Create Tax Tier (Multiple Entries)
        Go to Tax Tiers: 5: User
        Click "Add Tier": 5: User
        Input Fields: 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Tax Table (cont'd)
    section Create Tax Deductible (Multiple Entries)
        Go to Tax Deductibles: 5: User
        Click "Add Deductible": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Create Tax Table journey.

Edit Tax Table

Since the Tax Table is for display purpose only, there’s no impact to other data if changes are made to the Tax Tiers or Tax Deductibles. As such, we will allow the user to edit all fields where needed.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Tax Table
    section Edit Tax Table
        Go to Tax Tables: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Tax Tier
    section Edit Tax Tier (Multiple Entries)
        Go to Tax Tiers: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Tax Deductible
    section Edit Tax Deductible (Multiple Entries)
        Go to Tax Deductibles: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit Tax Table journey.

Delete Tax Table

Since the Tax Table is for display purpose only, there’s no impact to other data if it is deleted. As such, we will allow the user to delete the entry where needed.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Tax Table
    section Delete Tax Table
        Go to Tax Tables: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Tax Tier
    section Delete Tax Tier
        Go to Tax Tiers: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Tax Deductible
    section Delete Tax Deductible
        Go to Tax Deductibles: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Tax Table journey.

Estimate Taxes

The Tax Tables are meant to estimate the taxes due to the Income Transactions and Expense Transactions created for the user’s business. She can view the tax estimation using one of the Tax Tables.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Estimate Taxes
    section Estimate Taxes
        Go to Tax Tables: 5: User
        Click "Estimate Taxes": 5: User
        Confirm: 5: User

Estimate Taxes journey.

Manage Charts

Create Chart

The user can configure Charts to be displayed using either Work Logs or Transactions as data source, with the options to select the grouping category and filter by tags and date range.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Chart
    section Create Chart
        Go to Charts: 5: User
        Click "New": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Create Chart journey.

Edit Chart

The user can edit the options of a Chart and it will be re-rendered accordingly. Since there is no impact on other data in the system, the user can edit all fields of the Chart as needed.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Chart
    section Edit Chart
        Go to Charts: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit Chart journey.

Delete Chart

If the user no longer requires a Chart to be displayed, she can delete it.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Chart
    section Delete Chart
        Go to Charts: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Chart journey.

Manage Recurring Tasks

Create Recurring Task

Suppose that the user wants to setup recurring Income Transactions or Expense Transactions. The system offers built-in task templates so that she can use them for this purpose. This will be done in a Recurring Tasks page.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Recurring Task
    section Initiate Setup
        Go to Recurring Tasks: 5: User
        Click "New": 5: User
    section Configure Task
        Input Fields: 5: User
        Confirm: 5: User

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create Recurring Task (cont'd)
    section Configure Task Steps (Multiple Entries)
        Click "Add Step": 5: User
        Input Fields: 5: User
        Confirm: 5: User

Create Recurring Task journey.

Disable Recurring Task

The user may want to temporarily disable a Recurring Task, eg. when she suspends a third-party service subscription. Instead of deleting the task entirely, she can choose to disable it instead.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Disable Recurring Task
    section Disable Recurring Task
        Go to Recurring Tasks: 5: User
        Click "Disable": 5: User
        Confirm: 5: User

Disable Recurring Task journey.

Edit Recurring Task

The user may also edit a Recurring Task, eg. changing the description or schedule. However, the user should not be able to edit the task steps if the task has been run before, because those runs reference the steps and we will not be able to simply add or remove steps.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Recurring Task
    section Edit Recurring Task
        Go to Recurring Tasks: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit Recurring Task journey.

End Recurring Task

Instead of updating the steps of a task, the user will need to end the task and create a new one with new steps. This can be done by the “End Task” function.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title End Recurring Task
    section End Recurring Task
        Go to Recurring Tasks: 5: User
        Click "End": 5: User
        Confirm: 5: User

End Recurring Task journey.

Manually Run Recurring Task

Normally the tasks will run by the configured schedule, but we will allow the user to manually run a task if it’s necessary, but we will not allow any change to be made to the parameters.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Manually Run Recurring Task
    section Manually Run Recurring Task
        Go to Recurring Tasks: 5: User
        Click "Run": 5: User
        Confirm: 5: User

Manually Run Recurring Task journey.

Delete Recurring Task

In the event that the user accidentally creates a task, if it has not been run before, then she can delete it.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Recurring Task
    section Delete Recurring Task
        Go to Recurring Tasks: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Recurring Task journey.

Delete Recurring Task Step

In the event that the user accidentally creates a step, if it has not been run before, then she can delete it.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Delete Recurring Task Step
    section Delete Recurring Task Step
        Go to Recurring Task Steps: 5: User
        Click "Delete": 5: User
        Confirm: 5: User

Delete Recurring Task Step journey.

Manage System Configs

The user can setup the System Config which will apply to the entire app throughout the effective period. The app will come with default settings, and the user can change them as needed. For simplicity, there will be no Create action, all changes are done as an Edit action. Since these settings are required for the system to function properly, there will be no Delete action available.

Edit System Config

Everytime the user makes a change, the system will automatically set the effective end date of the latest record, and set the effective start date of the new record created from the change.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit System Config
    section Edit System Config
        Go to System Configs: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit System Config journey.

Manage Users

Create User

At the first time the user launches the app, she will need to create a new User record for herself.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Create User
    section Create User
        Launch App 1st Time: 5: User
        Click "New User": 5: User
        Input Credentials: 5: User
        Confirm: 5: User

Create User journey.

Login User

After creating a User record, the user can subsequently login to the app using the credentials created earlier.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Login User
    section Login User
        Launch App: 5: User
        Click "Login": 5: User
        Input Credentials: 5: User
        Confirm: 5: User

Login User journey.

Edit Profile

The user may then change her name or password in the Profile page.

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
  "primaryColor": "#f4e3d7",
  "primaryTextColor": "#502d16",
  "primaryBorderColor": "#784421",
  "lineColor": "#784421",
  "secondaryColor": "#deaa87",
  "tertiaryColor": "#c87137"
}
  }
}%%

journey
    title Edit Profile
    section Edit Profile
        Go to Profile: 5: User
        Click "Edit": 5: User
        Change Fields: 5: User
        Confirm: 5: User

Edit Profile journey.

That’s A Wrap

Finally, we have gone through all the user journeys of the app. The purpose of this exercise is to understand what are the various user workflows, so that we have a clearer idea how to design the system architecture and interactions.

In the process of writing the user journey diagrams, I also made a few changes to the data models and refined the requirements. This is not uncommon, because no one knows exactly every detail at the beginning, not even the end users themselves. It is through the process of design and analysis that we can find out the shortcomings of the earlier steps of the process, and refine them accordingly.

Which is why, I like to start with design and analysis first, instead of dive straight into implementation. When dealing with abstract designs, making changes is easy, I just have to update the Mermaid syntax or a few text. If I have started with implementation, I would have to delete many lines of codes, or even create database migrations to change the data schema.

This has been a fruitful exercise for me. Let’s move on to designing the sequence diagrams of the system!