Skip to content

Latest commit

 

History

History
586 lines (446 loc) · 18 KB

File metadata and controls

586 lines (446 loc) · 18 KB

👥 User Journeys & Customer Experience

This document outlines the key user journeys and customer experience flows in the Django Ecommerce API, providing detailed flowcharts and interaction patterns.

📋 Table of Contents

🎯 Customer Journey Overview

Complete Customer Lifecycle

journey
    title Customer Lifecycle Journey
    section Discovery
      Visit Website: 5: Guest
      Browse Products: 4: Guest
      View Product Details: 4: Guest
      Add to Wishlist: 3: Guest
    section Registration
      Create Account: 3: Guest
      Email Verification: 2: Customer
      Profile Setup: 4: Customer
    section Shopping
      Add to Cart: 5: Customer
      Apply Coupons: 4: Customer
      Review Cart: 4: Customer
      Checkout Process: 3: Customer
    section Post-Purchase
      Order Confirmation: 5: Customer
      Track Order: 4: Customer
      Receive Product: 5: Customer
      Leave Review: 3: Customer
    section Retention
      Repeat Purchase: 5: Customer
      Loyalty Program: 4: Customer
      Referral: 4: Customer
Loading

🛍️ Guest User Journey

Product Discovery & Browsing

flowchart TD
    START([User Visits Website]) --> BROWSE{Browse Products?}

    BROWSE -->|Yes| CATEGORY[Select Category]
    BROWSE -->|No| SEARCH[Use Search]

    CATEGORY --> FILTER[Apply Filters]
    SEARCH --> RESULTS[View Results]
    FILTER --> RESULTS

    RESULTS --> PRODUCT[Select Product]
    PRODUCT --> DETAILS[View Product Details]

    DETAILS --> VARIANTS{Has Variants?}
    VARIANTS -->|Yes| SELECT_VARIANT[Select Variant]
    VARIANTS -->|No| REVIEWS[Read Reviews]
    SELECT_VARIANT --> REVIEWS

    REVIEWS --> ACTION{User Action?}
    ACTION -->|Add to Cart| GUEST_CART[Guest Cart]
    ACTION -->|Add to Wishlist| REGISTER_PROMPT[Registration Prompt]
    ACTION -->|Share Product| SHARE[Share Product]
    ACTION -->|Continue Shopping| BROWSE

    GUEST_CART --> CHECKOUT_OPTION{Checkout Options}
    CHECKOUT_OPTION -->|Guest Checkout| GUEST_CHECKOUT[Guest Checkout]
    CHECKOUT_OPTION -->|Create Account| REGISTER[Register & Checkout]

    REGISTER_PROMPT --> REGISTER
    REGISTER --> CUSTOMER_JOURNEY[Registered Customer Journey]

    SHARE --> SOCIAL[Social Media Share]
    SOCIAL --> BROWSE

    GUEST_CHECKOUT --> PAYMENT[Payment Process]
    PAYMENT --> CONFIRMATION[Order Confirmation]

    style START fill:#e8f5e8
    style CUSTOMER_JOURNEY fill:#fff2cc
    style CONFIRMATION fill:#e8f5e8
Loading

Guest Checkout Flow

sequenceDiagram
    participant G as Guest User
    participant API as Django API
    participant CART as Cart Service
    participant ORDER as Order Service
    participant PAYMENT as Payment Gateway
    participant EMAIL as Email Service

    G->>API: View cart
    API->>CART: Get cart items
    CART->>API: Cart contents
    API->>G: Display cart

    G->>API: Proceed to checkout
    API->>G: Guest checkout form

    G->>API: Submit guest info + shipping
    API->>API: Validate guest data
    API->>API: Calculate totals
    API->>G: Order summary

    G->>API: Confirm order + payment
    API->>ORDER: Create guest order
    API->>PAYMENT: Process payment

    alt Payment Success
        PAYMENT->>API: Payment confirmed
        API->>ORDER: Update order status
        API->>EMAIL: Send confirmation
        API->>G: Order confirmation
        EMAIL->>G: Email confirmation
    else Payment Failed
        PAYMENT->>API: Payment failed
        API->>ORDER: Mark order failed
        API->>G: Payment error + retry
    end
Loading

👤 Registered Customer Journey

Registration & Onboarding

flowchart TD
    START([Registration Started]) --> METHOD{Registration Method}

    METHOD -->|Email| EMAIL_FORM[Email Registration Form]
    METHOD -->|Social| SOCIAL_AUTH[Social Media Auth]
    METHOD -->|Guest Upgrade| GUEST_CONVERT[Convert Guest to Customer]

    EMAIL_FORM --> VALIDATE[Validate Form Data]
    SOCIAL_AUTH --> SOCIAL_PROFILE[Get Social Profile]
    GUEST_CONVERT --> EXISTING_DATA[Use Existing Cart Data]

    VALIDATE --> DUPLICATE{Email Exists?}
    DUPLICATE -->|Yes| LOGIN_PROMPT[Prompt to Login]
    DUPLICATE -->|No| CREATE_ACCOUNT[Create Account]

    SOCIAL_PROFILE --> CREATE_ACCOUNT
    EXISTING_DATA --> CREATE_ACCOUNT

    CREATE_ACCOUNT --> VERIFY_EMAIL[Send Verification Email]
    VERIFY_EMAIL --> PENDING[Account Pending]

    PENDING --> VERIFY_CLICK[User Clicks Email Link]
    VERIFY_CLICK --> ACTIVATE[Activate Account]

    ACTIVATE --> ONBOARDING[Onboarding Flow]
    ONBOARDING --> PROFILE_SETUP[Complete Profile]
    PROFILE_SETUP --> PREFERENCES[Set Preferences]
    PREFERENCES --> WELCOME[Welcome Dashboard]

    LOGIN_PROMPT --> LOGIN[Login Process]
    LOGIN --> WELCOME

    WELCOME --> SHOPPING[Start Shopping]

    style START fill:#e8f5e8
    style WELCOME fill:#fff2cc
    style SHOPPING fill:#e8f5e8
Loading

Authenticated Shopping Experience

flowchart TD
    LOGIN([User Logged In]) --> DASHBOARD[Customer Dashboard]

    DASHBOARD --> BROWSE[Browse Products]
    DASHBOARD --> WISHLIST[View Wishlist]
    DASHBOARD --> ORDERS[Order History]
    DASHBOARD --> PROFILE[Profile Settings]

    BROWSE --> PRODUCT[Select Product]
    PRODUCT --> PERSONALIZED[Personalized Recommendations]
    PERSONALIZED --> ADD_CART[Add to Cart]

    ADD_CART --> CART[View Cart]
    CART --> SAVED_ADDRESSES{Saved Addresses?}

    SAVED_ADDRESSES -->|Yes| SELECT_ADDRESS[Select Address]
    SAVED_ADDRESSES -->|No| NEW_ADDRESS[Add New Address]

    SELECT_ADDRESS --> PAYMENT_METHODS{Saved Payment Methods?}
    NEW_ADDRESS --> PAYMENT_METHODS

    PAYMENT_METHODS -->|Yes| SELECT_PAYMENT[Select Payment Method]
    PAYMENT_METHODS -->|No| NEW_PAYMENT[Add Payment Method]

    SELECT_PAYMENT --> REVIEW_ORDER[Review Order]
    NEW_PAYMENT --> REVIEW_ORDER

    REVIEW_ORDER --> APPLY_REWARDS{Loyalty Points?}
    APPLY_REWARDS -->|Yes| USE_POINTS[Apply Points/Rewards]
    APPLY_REWARDS -->|No| PLACE_ORDER[Place Order]

    USE_POINTS --> PLACE_ORDER
    PLACE_ORDER --> ORDER_CONFIRM[Order Confirmation]

    ORDER_CONFIRM --> TRACK[Track Order]
    TRACK --> DELIVERY[Delivery]
    DELIVERY --> REVIEW_PRODUCT[Product Review]

    WISHLIST --> PRODUCT
    ORDERS --> REORDER[Reorder Items]
    REORDER --> CART

    PROFILE --> UPDATE_INFO[Update Information]
    UPDATE_INFO --> DASHBOARD

    style LOGIN fill:#e8f5e8
    style ORDER_CONFIRM fill:#fff2cc
    style REVIEW_PRODUCT fill:#e8f5e8
Loading

Customer Account Management

stateDiagram-v2
    [*] --> LoggedOut

    LoggedOut --> Authenticating: Login Attempt
    Authenticating --> LoggedIn: Success
    Authenticating --> LoggedOut: Failed

    LoggedIn --> ViewingProfile: View Profile
    LoggedIn --> ManagingAddresses: Manage Addresses
    LoggedIn --> ManagingPayments: Manage Payments
    LoggedIn --> ViewingOrders: View Orders
    LoggedIn --> Shopping: Continue Shopping

    ViewingProfile --> UpdatingProfile: Edit Profile
    UpdatingProfile --> ViewingProfile: Save Changes

    ManagingAddresses --> AddingAddress: Add New Address
    ManagingAddresses --> EditingAddress: Edit Address
    ManagingAddresses --> DeletingAddress: Delete Address
    AddingAddress --> ManagingAddresses: Address Saved
    EditingAddress --> ManagingAddresses: Changes Saved
    DeletingAddress --> ManagingAddresses: Address Removed

    ManagingPayments --> AddingPayment: Add Payment Method
    ManagingPayments --> RemovingPayment: Remove Payment Method
    AddingPayment --> ManagingPayments: Payment Saved
    RemovingPayment --> ManagingPayments: Payment Removed

    ViewingOrders --> ViewingOrderDetail: Select Order
    ViewingOrderDetail --> TrackingOrder: Track Order
    ViewingOrderDetail --> ReturningOrder: Return Order
    ViewingOrderDetail --> ReviewingOrder: Write Review

    Shopping --> AddingToCart: Add Products
    AddingToCart --> Checkout: Proceed to Checkout
    Checkout --> OrderPlaced: Complete Purchase
    OrderPlaced --> ViewingOrders: View Order

    LoggedIn --> LoggedOut: Logout
Loading

👨‍💼 Admin User Journey

Admin Dashboard & Management

flowchart TD
    ADMIN_LOGIN([Admin Login]) --> DASHBOARD[Admin Dashboard]

    DASHBOARD --> ANALYTICS[View Analytics]
    DASHBOARD --> PRODUCTS[Manage Products]
    DASHBOARD --> ORDERS[Manage Orders]
    DASHBOARD --> CUSTOMERS[Manage Customers]
    DASHBOARD --> CONTENT[Manage Content]
    DASHBOARD --> SETTINGS[System Settings]

    ANALYTICS --> SALES_REPORT[Sales Reports]
    ANALYTICS --> USER_ANALYTICS[User Analytics]
    ANALYTICS --> INVENTORY_REPORT[Inventory Reports]

    PRODUCTS --> PRODUCT_LIST[Product List]
    PRODUCT_LIST --> ADD_PRODUCT[Add New Product]
    PRODUCT_LIST --> EDIT_PRODUCT[Edit Product]
    PRODUCT_LIST --> INVENTORY[Manage Inventory]

    ADD_PRODUCT --> PRODUCT_DETAILS[Enter Product Details]
    PRODUCT_DETAILS --> UPLOAD_IMAGES[Upload Images]
    UPLOAD_IMAGES --> SET_PRICING[Set Pricing]
    SET_PRICING --> PUBLISH[Publish Product]

    ORDERS --> ORDER_LIST[Order List]
    ORDER_LIST --> ORDER_DETAIL[View Order Details]
    ORDER_DETAIL --> UPDATE_STATUS[Update Order Status]
    ORDER_DETAIL --> PROCESS_REFUND[Process Refund]
    ORDER_DETAIL --> CONTACT_CUSTOMER[Contact Customer]

    CUSTOMERS --> CUSTOMER_LIST[Customer List]
    CUSTOMER_LIST --> CUSTOMER_DETAIL[Customer Details]
    CUSTOMER_DETAIL --> CUSTOMER_ORDERS[Customer Orders]
    CUSTOMER_DETAIL --> CUSTOMER_SUPPORT[Customer Support]

    CONTENT --> CATEGORIES[Manage Categories]
    CONTENT --> PROMOTIONS[Manage Promotions]
    CONTENT --> EMAILS[Email Templates]

    SETTINGS --> USER_ROLES[User Roles]
    SETTINGS --> PAYMENT_CONFIG[Payment Configuration]
    SETTINGS --> SHIPPING_CONFIG[Shipping Configuration]

    style ADMIN_LOGIN fill:#ffe6e6
    style DASHBOARD fill:#fff2cc
    style PUBLISH fill:#e8f5e8
Loading

Order Management Flow

stateDiagram-v2
    [*] --> NewOrder

    NewOrder --> Processing: Admin Reviews
    NewOrder --> Cancelled: Customer Cancels

    Processing --> PaymentPending: Awaiting Payment
    Processing --> Confirmed: Payment Confirmed

    PaymentPending --> Confirmed: Payment Received
    PaymentPending --> Cancelled: Payment Failed

    Confirmed --> Preparing: Start Fulfillment
    Preparing --> Shipped: Package Shipped

    Shipped --> InTransit: In Transit
    InTransit --> Delivered: Package Delivered

    Delivered --> Completed: Customer Satisfied
    Delivered --> ReturnRequested: Return Requested

    ReturnRequested --> ReturnApproved: Admin Approves
    ReturnRequested --> ReturnDenied: Admin Denies

    ReturnApproved --> ReturnReceived: Product Returned
    ReturnReceived --> Refunded: Refund Processed

    Cancelled --> [*]
    Completed --> [*]
    Refunded --> [*]
Loading

📱 Mobile App Journey

Mobile-First Experience

flowchart TD
    OPEN_APP([Open Mobile App]) --> SPLASH[Splash Screen]
    SPLASH --> ONBOARDING{First Time?}

    ONBOARDING -->|Yes| INTRO[App Introduction]
    ONBOARDING -->|No| AUTH_CHECK{Logged In?}

    INTRO --> PERMISSIONS[Request Permissions]
    PERMISSIONS --> AUTH_CHECK

    AUTH_CHECK -->|Yes| HOME[Home Screen]
    AUTH_CHECK -->|No| AUTH_SCREEN[Login/Register]

    AUTH_SCREEN --> BIOMETRIC{Biometric Available?}
    BIOMETRIC -->|Yes| SETUP_BIOMETRIC[Setup Biometric Auth]
    BIOMETRIC -->|No| HOME
    SETUP_BIOMETRIC --> HOME

    HOME --> CATEGORIES[Browse Categories]
    HOME --> SEARCH[Search Products]
    HOME --> SCAN_BARCODE[Scan Barcode]
    HOME --> PROFILE[Profile]
    HOME --> CART[Shopping Cart]

    SCAN_BARCODE --> PRODUCT_FOUND{Product Found?}
    PRODUCT_FOUND -->|Yes| PRODUCT_DETAIL[Product Details]
    PRODUCT_FOUND -->|No| SEARCH

    CATEGORIES --> PRODUCT_LIST[Product List]
    SEARCH --> PRODUCT_LIST
    PRODUCT_LIST --> PRODUCT_DETAIL

    PRODUCT_DETAIL --> SWIPE_IMAGES[Swipe Product Images]
    SWIPE_IMAGES --> ZOOM[Pinch to Zoom]
    ZOOM --> ADD_TO_CART[Add to Cart]

    ADD_TO_CART --> CART_ANIMATION[Cart Animation]
    CART_ANIMATION --> CONTINUE_SHOPPING[Continue Shopping]
    CONTINUE_SHOPPING --> HOME

    CART --> CHECKOUT_MOBILE[Mobile Checkout]
    CHECKOUT_MOBILE --> PAYMENT_MOBILE[Mobile Payment]
    PAYMENT_MOBILE --> APPLE_PAY{Apple/Google Pay?}

    APPLE_PAY -->|Yes| QUICK_PAY[Quick Payment]
    APPLE_PAY -->|No| CARD_FORM[Card Form]

    QUICK_PAY --> ORDER_SUCCESS[Order Success]
    CARD_FORM --> ORDER_SUCCESS

    ORDER_SUCCESS --> PUSH_NOTIFICATION[Push Notification Setup]
    PUSH_NOTIFICATION --> TRACK_ORDER[Track Order]

    style OPEN_APP fill:#e8f5e8
    style QUICK_PAY fill:#fff2cc
    style ORDER_SUCCESS fill:#e8f5e8
Loading

Mobile Checkout Optimization

sequenceDiagram
    participant U as User
    participant APP as Mobile App
    participant API as Django API
    participant PAYMENT as Payment Gateway
    participant PUSH as Push Service

    U->>APP: Tap Checkout
    APP->>API: Get checkout data
    API->>APP: Checkout form (mobile-optimized)

    APP->>U: Show simplified form
    U->>APP: Auto-fill with saved data
    APP->>APP: Validate form locally

    U->>APP: Select payment method
    APP->>APP: Check for biometric auth
    APP->>U: Biometric authentication
    U->>APP: Authenticate

    APP->>API: Submit order
    API->>PAYMENT: Process payment
    PAYMENT->>API: Payment result

    alt Payment Success
        API->>APP: Order confirmation
        APP->>PUSH: Schedule notifications
        APP->>U: Success animation
        PUSH->>U: Order confirmation push
    else Payment Failed
        API->>APP: Payment error
        APP->>U: Error message + retry
    end
Loading

⚠️ Error Handling Flows

Common Error Scenarios

flowchart TD
    ERROR_OCCURRED([Error Occurred]) --> ERROR_TYPE{Error Type}

    ERROR_TYPE -->|Network| NETWORK_ERROR[Network Error]
    ERROR_TYPE -->|Validation| VALIDATION_ERROR[Validation Error]
    ERROR_TYPE -->|Authentication| AUTH_ERROR[Authentication Error]
    ERROR_TYPE -->|Server| SERVER_ERROR[Server Error]
    ERROR_TYPE -->|Payment| PAYMENT_ERROR[Payment Error]

    NETWORK_ERROR --> RETRY_PROMPT[Show Retry Button]
    RETRY_PROMPT --> RETRY_ACTION[User Retries]
    RETRY_ACTION --> NETWORK_CHECK{Network Available?}
    NETWORK_CHECK -->|Yes| RESUME[Resume Process]
    NETWORK_CHECK -->|No| OFFLINE_MODE[Offline Mode]

    VALIDATION_ERROR --> HIGHLIGHT_FIELDS[Highlight Invalid Fields]
    HIGHLIGHT_FIELDS --> SHOW_HINTS[Show Helpful Hints]
    SHOW_HINTS --> USER_CORRECTS[User Corrects Data]
    USER_CORRECTS --> RESUME

    AUTH_ERROR --> LOGOUT[Force Logout]
    LOGOUT --> LOGIN_REQUIRED[Redirect to Login]
    LOGIN_REQUIRED --> SAVE_STATE[Save Current State]
    SAVE_STATE --> RESTORE_STATE[Restore After Login]

    SERVER_ERROR --> ERROR_PAGE[Show Error Page]
    ERROR_PAGE --> CONTACT_SUPPORT[Contact Support Option]
    ERROR_PAGE --> TRY_AGAIN[Try Again Later]

    PAYMENT_ERROR --> PAYMENT_RETRY[Payment Retry Options]
    PAYMENT_RETRY --> DIFFERENT_METHOD[Try Different Method]
    PAYMENT_RETRY --> SAVE_FOR_LATER[Save Order for Later]

    OFFLINE_MODE --> SYNC_LATER[Sync When Online]
    RESUME --> SUCCESS[Process Completed]
    RESTORE_STATE --> RESUME
    DIFFERENT_METHOD --> RESUME

    style ERROR_OCCURRED fill:#ffe6e6
    style SUCCESS fill:#e8f5e8
Loading

Progressive Error Recovery

stateDiagram-v2
    [*] --> NormalOperation

    NormalOperation --> MinorError: Validation/UI Error
    NormalOperation --> MajorError: Network/Server Error
    NormalOperation --> CriticalError: Auth/Security Error

    MinorError --> ShowTooltip: Display Help
    ShowTooltip --> UserCorrects: User Action
    UserCorrects --> NormalOperation: Success
    UserCorrects --> MinorError: Still Invalid

    MajorError --> ShowRetry: Display Retry Option
    ShowRetry --> RetryAttempt: User Retries
    RetryAttempt --> NormalOperation: Success
    RetryAttempt --> OfflineMode: Still Failing

    OfflineMode --> QueueActions: Cache Actions
    QueueActions --> SyncWhenOnline: Network Returns
    SyncWhenOnline --> NormalOperation: Sync Complete

    CriticalError --> ForceLogout: Security Measure
    ForceLogout --> RequireReauth: Need New Auth
    RequireReauth --> NormalOperation: Auth Success
    RequireReauth --> [*]: Auth Failed
Loading

♿ Accessibility Considerations

Inclusive Design Patterns

flowchart TD
    ACCESSIBILITY([Accessibility Features]) --> VISUAL[Visual Accessibility]
    ACCESSIBILITY --> MOTOR[Motor Accessibility]
    ACCESSIBILITY --> COGNITIVE[Cognitive Accessibility]
    ACCESSIBILITY --> AUDITORY[Auditory Accessibility]

    VISUAL --> HIGH_CONTRAST[High Contrast Mode]
    VISUAL --> LARGE_TEXT[Large Text Options]
    VISUAL --> SCREEN_READER[Screen Reader Support]
    VISUAL --> COLOR_BLIND[Color Blind Friendly]

    MOTOR --> KEYBOARD_NAV[Keyboard Navigation]
    MOTOR --> VOICE_CONTROL[Voice Control]
    MOTOR --> LARGE_TARGETS[Large Touch Targets]
    MOTOR --> GESTURE_ALT[Alternative Gestures]

    COGNITIVE --> SIMPLE_LANG[Simple Language]
    COGNITIVE --> CLEAR_STRUCTURE[Clear Structure]
    COGNITIVE --> PROGRESS_INDICATORS[Progress Indicators]
    COGNITIVE --> ERROR_PREVENTION[Error Prevention]

    AUDITORY --> VISUAL_ALERTS[Visual Alerts]
    AUDITORY --> CAPTIONS[Video Captions]
    AUDITORY --> TRANSCRIPT[Audio Transcripts]

    HIGH_CONTRAST --> TESTING[Accessibility Testing]
    LARGE_TEXT --> TESTING
    SCREEN_READER --> TESTING
    KEYBOARD_NAV --> TESTING
    SIMPLE_LANG --> TESTING
    VISUAL_ALERTS --> TESTING

    TESTING --> COMPLIANCE[WCAG 2.1 AA Compliance]
    COMPLIANCE --> USER_FEEDBACK[User Feedback Loop]

    style ACCESSIBILITY fill:#e8f5e8
    style COMPLIANCE fill:#fff2cc
Loading

This comprehensive user journey documentation ensures that the Django Ecommerce API provides excellent user experiences across all user types and interaction methods, with proper consideration for accessibility and error handling.