# Use Case Documentation: Krow Client Mobile App

## 1. App Initialization

*   **Primary Actor:** System (Automated) / Business Client
*   **Description:** The initial sequence that determines the user's state (authenticated or not) and routes them to the appropriate starting screen.
*   **Preconditions:** User has launched the application.
*   **Main Flow:**
    1.  User opens the app.
    2.  System checks the local authentication status.
    3.  **If Authenticated:** System routes the user directly to the **Home Dashboard**.
    4.  **If Unauthenticated:** System routes the user to the **Authentication Flow**.

---

## 2. User Authentication

*   **Primary Actor:** Business Client
*   **Description:** The process of logging in to access the platform's features or recovering a lost password.
*   **Preconditions:** User is on the Sign-In screen.
*   **Main Flow (Sign In):**
    1.  User enters their registered email and password.
    2.  User taps "Sign In".
    3.  System verifies the credentials against the backend.
    4.  **On Success:** User is redirected to the **Home Dashboard**.
*   **Alternative Flow (Forgot Password):**
    1.  User taps "Forgot Password".
    2.  User enters their email address.
    3.  System sends a password reset link.
    4.  User follows the email instructions to reset credentials.

---

## 3. Main App Navigation

*   **Primary Actor:** Business Client
*   **Description:** The central hub where users can access different functional areas of the business management suite.
*   **Preconditions:** User is logged in and on the Home Dashboard.
*   **Main Flow:**
    1.  User views the dashboard summary.
    2.  User selects a navigation option:
        *   **Events:** To manage upcoming shifts.
        *   **Hubs:** To manage venues and departments.
        *   **Invoices:** To handle billing and payments.
        *   **Profile:** To manage business settings and support.

---

## 4. Hub & Venue Management

*   **Primary Actor:** Business Client
*   **Description:** Configuring the physical locations (Hubs) and internal teams (Departments) where shifts will take place.
*   **Preconditions:** User is in the "Hubs" section.
*   **Main Flow:**
    1.  User views the list of existing Hubs.
    2.  User taps "Add New Hub".
    3.  User enters venue details (Name, Address, Photo).
    4.  System validates the address via map services.
    5.  User adds specific "Departments" (e.g., Kitchen, Bar) to the Hub.
    6.  User saves the configuration.

---

## 5. Event Management

*   **Primary Actor:** Business Client
*   **Description:** Creating, publishing, and managing events and their associated staffing requirements.
*   **Preconditions:** User is in the "Events" section and has at least one Hub configured.
*   **Main Flow:**
    1.  User views the list of events (Upcoming, Active, Past).
    2.  User taps "Create New Event".
    3.  User selects a Hub and sets the date/time.
    4.  User defines "Shifts" by adding "Positions" (Role, Quantity, Rate).
    5.  User reviews the estimated cost.
    6.  User publishes the event to the marketplace.

---

## 6. Operations (Live Management)

*   **Primary Actor:** Business Client
*   **Description:** Monitoring real-time staff attendance, managing check-ins, and handling operational alerts during an event.
*   **Preconditions:** An event is active or upcoming with assigned staff.
*   **Main Flow:**
    1.  User views details of an active event.
    2.  User monitors the "Assigned Staff" list.
    3.  User taps a staff member to view their profile, skills, and status.
    4.  **Manual Action:** If a staff member cannot scan a QR code, the user manually clocks them In/Out.
    5.  **Alerts:** User receives real-time notifications (e.g., "Staff is Late") and takes action.

---

## 7. Staff Feedback

*   **Primary Actor:** Business Client
*   **Description:** Providing performance ratings for staff members after their shifts are completed.
*   **Preconditions:** A shift has ended.
*   **Main Flow:**
    1.  User selects a completed shift or receives a "Rate Staff" prompt.
    2.  User selects a staff member.
    3.  User assigns a star rating (1-5) and optional tags/comments.
    4.  User submits the rating to the system.

---

## 8. Finance Management

*   **Primary Actor:** Business Client
*   **Description:** Managing the financial aspects of the account, including viewing invoice history and downloading documents.
*   **Preconditions:** User is in the "Invoices" section.
*   **Main Flow:**
    1.  User views a list of all invoices.
    2.  User checks the status (Paid, Due, Overdue).
    3.  User selects an invoice to view details.
    4.  User taps "Download PDF" for accounting records.

---

## 9. Profile Management

*   **Primary Actor:** Business Client
*   **Description:** Managing business identity, app settings, and accessing support.
*   **Preconditions:** User is in the "Profile" section.
*   **Main Flow:**
    1.  User views their business profile details.
    2.  **Edit Details:** User updates business name, logo, or contact info.
    3.  **Notifications:** User toggles push notification preferences.
    4.  **Support:** User accesses the Help Center or contacts customer support.

---

# Use Case Diagram

```mermaid
flowchart TD        
       subgraph AppInitialization                                                                                                                                                               
           A[Start App] --> B{Check Auth Status};                                                                                                                                               
           B -- Authenticated --> C[Go to Home];                                                                                                                                                
           B -- Unauthenticated --> D[Go to Auth];                                                                                                                                              
       end                                                                                                                                                                                      
                                                                                                                                                                                                
       subgraph UserAuthentication                                                                                                                                                              
           D --> G[Sign In Screen];                                                                                                                                                             
           G --> H{Action};                                                                                                                                                          
           H -- Sign In --> I[Enter Email & Password];                                                                                                                                              
           I --> J[Verify Credentials];                                                                                                                                                          
           J -- Success --> C;                                                                                                                                                                  
           H -- Forgot Password --> K[Reset via Email];                                                                                                                                           
       end                                                                                                                                                                                      
                                                                                                                                                                                                
       subgraph MainApp                                                                                                                                                                         
           C --> AC[Home Dashboard];                                                                                                                                                               
           AC --> AD{Navigate};                                                                                                                                                                 
           AD -- Events --> AE[Event Management];                                                                                                                                               
           AD -- Hubs --> AF[Hub & Venue Management];                                                                                                                                          
           AD -- Invoices --> AG[Finance & Invoices];                                                                                                                                            
           AD -- Profile --> AH[Profile Management];                                                                                                                                            
       end                                                                                                                                                                                      
                                                                                                                                                                                                
       subgraph HubManagement                                                                                                                                                                 
           AF --> AI[View Hubs List];                                                                                                                                                              
           AI --> AJ[Add New Hub/Venue];                                                                                                                                                       
           AJ --> AK[Configure Departments];                                                                                                                                                      
       end                                                                                                                                                                                      
                                                                                                                                                                                                
       subgraph EventManagement                                                                                                                                                              
           AE --> AL[View Events List];                                                                                                                                                    
           AL --> AM[Create New Event];                                                                                                                                                    
           AM --> AN[Define Shifts & Positions];                                                                                                                                            
           AN --> AO[Review & Publish Shift];                                                                                                                                                   
       end                                                                                                                                                                                      
                                                                                                                                                                                                
       subgraph Operations                                                                                                                                                               
           AL --> AP[Active/Upcoming Event Details];                                                                                                                                                             
           AP --> AQ[Monitor Assigned Staff];                                                                                                                                                          
           AQ --> AR[View Staff Profile & Status];                                                                                                                                                      
           AQ --> AS[Manual Clock In/Out];                                                                                                                                                          
           AP --> AT[Receive Real-time Alerts];                                                                                                                                                      
       end                                                                                                                                                                                      
                                                                                                                                                                                                
       subgraph StaffFeedback                                                                                                                                                                      
           AS --> AU[Post-Shift Rating];                                                                                                                                                      
           AU --> AV[Rate Staff Performance];                                                                                                                                                      
       end

       subgraph FinanceManagement                                                                                                                                                                      
           AG --> AW[View Invoices];                                                                                                                                                      
           AW --> AX[Check Payment Status];                                                                                                                                                      
           AW --> AY[Download Invoice PDF];                                                                                                                                                      
       end

       subgraph ProfileManagement                                                                                                                                                               
           AH --> AZ[View Business Profile];                                                                                                                                                             
           AZ --> BA[Edit Business Details];                                                                                                                                                      
           AZ --> BB[Manage Notifications];                                                                                                                                                      
           AZ --> BC[Access Support];                                                                                                                                                           
       end
```