feat: add dataconnect-generated dependency and update pnpm workspace configuration
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dataconnect/generated": "link:src/dataconnect-generated",
|
||||
"@firebase/analytics": "^0.10.19",
|
||||
"@firebase/data-connect": "^0.3.12",
|
||||
"@radix-ui/react-dialog": "^1.1.15",
|
||||
|
||||
25
apps/web/pnpm-lock.yaml
generated
25
apps/web/pnpm-lock.yaml
generated
@@ -6,11 +6,15 @@ settings:
|
||||
|
||||
overrides:
|
||||
dataconnect-generated: link:../../../../../AppData/Local/pnpm/global/5/node_modules/src/dataconnect-generated
|
||||
'@dataconnect/generated': link:src/dataconnect-generated
|
||||
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
'@dataconnect/generated':
|
||||
specifier: link:src/dataconnect-generated
|
||||
version: link:src/dataconnect-generated
|
||||
'@firebase/analytics':
|
||||
specifier: ^0.10.19
|
||||
version: 0.10.19(@firebase/app@0.14.7)
|
||||
@@ -1517,79 +1521,66 @@ packages:
|
||||
resolution: {integrity: sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.57.0':
|
||||
resolution: {integrity: sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.57.0':
|
||||
resolution: {integrity: sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.57.0':
|
||||
resolution: {integrity: sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-loong64-gnu@4.57.0':
|
||||
resolution: {integrity: sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-loong64-musl@4.57.0':
|
||||
resolution: {integrity: sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-ppc64-gnu@4.57.0':
|
||||
resolution: {integrity: sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-ppc64-musl@4.57.0':
|
||||
resolution: {integrity: sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.57.0':
|
||||
resolution: {integrity: sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-musl@4.57.0':
|
||||
resolution: {integrity: sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.57.0':
|
||||
resolution: {integrity: sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.57.0':
|
||||
resolution: {integrity: sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.57.0':
|
||||
resolution: {integrity: sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-openbsd-x64@4.57.0':
|
||||
resolution: {integrity: sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==}
|
||||
@@ -1665,28 +1656,24 @@ packages:
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@tailwindcss/oxide-linux-arm64-musl@4.1.18':
|
||||
resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@tailwindcss/oxide-linux-x64-gnu@4.1.18':
|
||||
resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@tailwindcss/oxide-linux-x64-musl@4.1.18':
|
||||
resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@tailwindcss/oxide-wasm32-wasi@4.1.18':
|
||||
resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==}
|
||||
@@ -2417,28 +2404,24 @@ packages:
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
lightningcss-linux-arm64-musl@1.30.2:
|
||||
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
lightningcss-linux-x64-gnu@1.30.2:
|
||||
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
lightningcss-linux-x64-musl@1.30.2:
|
||||
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
lightningcss-win32-arm64-msvc@1.30.2:
|
||||
resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
overrides:
|
||||
|
||||
'@dataconnect/generated': link:src/dataconnect-generated
|
||||
dataconnect-generated: link:../../../../../AppData/Local/pnpm/global/5/node_modules/src/dataconnect-generated
|
||||
|
||||
258
demos/m3/m3-client-note.md
Normal file
258
demos/m3/m3-client-note.md
Normal file
@@ -0,0 +1,258 @@
|
||||
# KROW Workforce Platform — Feature Testing Plan for Milestone 3
|
||||
|
||||
**Version:** Milestone 3 (0.0.1-IlianaStaffM3 and 0.0.1-IlianaClientM3)
|
||||
**Date:** February 6, 2026
|
||||
**Estimated Duration:** 25-30 minutes
|
||||
|
||||
---
|
||||
|
||||
## Required Applications
|
||||
- Client Mobile Application (v0.0.1-IlianaClientM3)
|
||||
- Staff Mobile Application (v0.0.1-IlianaStaffM3)
|
||||
|
||||
---
|
||||
|
||||
## 1. Testing Environment Setup
|
||||
|
||||
### Required Test Accounts
|
||||
|
||||
**Client Account (Business User):**
|
||||
- Email: `legendary@krowd.com`
|
||||
- Password: `Demo2026!`
|
||||
- Client Name: "Krow"
|
||||
|
||||
**Staff Account (Worker):**
|
||||
- Phone: `+15557654321`
|
||||
- OTP Code: `123456` (demo mode)
|
||||
- Name: "Mariana Torres"
|
||||
|
||||
### Prerequisites
|
||||
1. ✅ Both apps installed on the device
|
||||
2. ✅ Network connection stable
|
||||
|
||||
---
|
||||
|
||||
## 2. Testing Steps
|
||||
|
||||
### 2.1: Register Business (Client App)
|
||||
**Purpose:** Show the client onboarding experience
|
||||
|
||||
**Steps:**
|
||||
1. Open Client App → Tap "Create Account"
|
||||
2. Enter business email, and password (not the provided test account credentials, use a new email for this step)
|
||||
3. Navigate to the home page
|
||||
|
||||
**Observable Points:** :
|
||||
- Empty dashboard, no orders, no workers, clean slate
|
||||
|
||||
---
|
||||
|
||||
### 2.2: Register Staff (Staff App)
|
||||
**Purpose:** Show the worker onboarding experience
|
||||
|
||||
**Steps:**
|
||||
1. Open Staff App → Tap "Sign Up"
|
||||
2. Enter phone number and verify with OTP code (not the provided test account credentials, use a new phone number for this step)
|
||||
3. Follow the onboarding process
|
||||
4. Navigate to the home page
|
||||
|
||||
**Observable Points:** :
|
||||
- Empty shifts list, no available work yet
|
||||
|
||||
---
|
||||
|
||||
### 2.3: Client Logs In with Existing Account (Client App)
|
||||
**Note:** Use the client demo account credentials provided above.
|
||||
**Purpose:** Show the sign-in experience for returning users
|
||||
|
||||
**Steps:**
|
||||
1. Close Client App and reopen it.
|
||||
2. Tap "Sign In" button
|
||||
3. Enter credentials:
|
||||
- Email: `legendary@krowd.com`
|
||||
- Password: `Demo2026!`
|
||||
4. Tap "Sign In"
|
||||
|
||||
---
|
||||
|
||||
### 2.4: Client Views Populated Dashboard (Client App)
|
||||
**Purpose:** Show how the client app displays active operations
|
||||
|
||||
**Steps:**
|
||||
1. After signing in, observe the home screen
|
||||
2. Navigate through populated sections:
|
||||
- Home: Coverage stats, upcoming shifts
|
||||
- Orders: Posted shifts with workers assigned
|
||||
- Coverage: Real-time worker status
|
||||
|
||||
**Observable Points:**
|
||||
- Coverage percentage for today's shifts
|
||||
- Workers checked in vs. needed
|
||||
- Late workers alerts
|
||||
- Today's estimated labor cost
|
||||
|
||||
---
|
||||
|
||||
### 2.5: Client Creates a New Hub (Client App)
|
||||
**Purpose:** Show the hub creation process
|
||||
|
||||
**Steps:**
|
||||
1. Navigate to Hubs page via the settings button in the top right corner of the home screen
|
||||
2. Tap the "Hubs" button in the settings menu.
|
||||
3. Tap the "+" icon at the bottom right of the hubs list, to open the hub creation form.
|
||||
4. Fill in hub details:
|
||||
- Hub name: "Downtown Convention Center"
|
||||
- Address: Start typing and select an address.
|
||||
5. Tap "Create Hub"
|
||||
6. See the new hub appear in the hubs list
|
||||
|
||||
---
|
||||
|
||||
### 2.6: Client Creates New Order (Client App)
|
||||
**Purpose:** Walk through the order creation process
|
||||
|
||||
**Steps:**:
|
||||
1. Go back to the home screen.
|
||||
2. Navigate to the "Orders" tab in the bottom navigation.
|
||||
3. Tap the "+ Post" button on top right to open the order type selection screen.
|
||||
4. Select "One-Time" from the order type options.
|
||||
5. Fill in order details:
|
||||
- Order name: "Summer Gala 2026"
|
||||
- Date: [Select upcoming date]
|
||||
- Hub: [Select existing hub]
|
||||
- Add position: Server, Count: 3, Hours: 5PM-9PM
|
||||
6. Tap "Create Order"
|
||||
|
||||
---
|
||||
|
||||
### 2.7: Client Views Order Details (Client App)
|
||||
**Purpose:** View detailed shift information and worker assignments
|
||||
|
||||
**Steps:**
|
||||
1. View the created order in the orders list on the order screen.
|
||||
|
||||
**Observable Points:**
|
||||
- Event name and location
|
||||
- Roles needed
|
||||
- Clock in/out times
|
||||
- Estimated cost
|
||||
- Coverage percentage bar
|
||||
|
||||
---
|
||||
|
||||
### 2.8: Client Monitors Coverage Dashboard (Client App)
|
||||
**Purpose:** Show real-time worker tracking capabilities
|
||||
|
||||
**Steps:**
|
||||
1. Navigate to the "Coverage" tab in the bottom navigation.
|
||||
2. Observe the worker status for active shifts.
|
||||
|
||||
**Observable Points:**
|
||||
- Worker status (Checked In, En Route, Late, Not Arrived)
|
||||
- Color-coded status badges (green, yellow, red)
|
||||
- Worker information
|
||||
|
||||
---
|
||||
|
||||
### 2.9: Staff Logs In with Existing Account (Staff App)
|
||||
**Note:** Use the staff demo account credentials provided above.
|
||||
**Purpose:** Show the staff app sign-in experience for returning users
|
||||
|
||||
**Steps:**
|
||||
1. Close the staff app and reopen it.
|
||||
2. Tap "Log In" button
|
||||
3. Enter phone number: `5557654321`
|
||||
4. Tap "Send Code"
|
||||
5. Enter OTP: `123456`
|
||||
|
||||
---
|
||||
|
||||
### 2.10: Staff Views Home Dashboard (Staff App)
|
||||
**Purpose:** View worker's personalized dashboard
|
||||
|
||||
**Observable Points:**
|
||||
- Welcome message with worker's name
|
||||
- Today's Shifts section (confirmed shifts for today)
|
||||
- Tomorrow's Shifts section
|
||||
- Recommended shifts section
|
||||
|
||||
---
|
||||
|
||||
### 2.11: Staff Finds Available Shifts (Staff App)
|
||||
**Purpose:** Show the shift search and discovery experience for workers
|
||||
|
||||
**Steps:**
|
||||
1. Navigate to the "Shifts" tab in the bottom navigation.
|
||||
2. Tap the "Find Shifts" button on top to view available shifts.
|
||||
|
||||
**Observable Points:**
|
||||
- List of shifts
|
||||
- Hourly rate prominently displayed
|
||||
- Role requirements (e.g., "Bartender - Spring Gala")
|
||||
- Date, time, and duration
|
||||
|
||||
**Note:**
|
||||
>Due to a misunderstanding in the order creation flow, we initially assumed that a newly created order would need to be approved by the vendor before appearing in the >list of available shifts for workers to apply. As a result, the order created in the previous step does not appear in the available shifts list.
|
||||
>We are currently fixing this issue.
|
||||
---
|
||||
|
||||
### 2.12: Staff Applies for Shift (Staff App)
|
||||
**Purpose:** Show the application process from worker side
|
||||
|
||||
**Steps:**
|
||||
1. Tap on an available shift to view details
|
||||
2. Review business name, location, pay, requirements
|
||||
3. Tap "Book Shift" button
|
||||
4. Tap "Book" on the confirmation dialog
|
||||
4. See confirmation
|
||||
|
||||
---
|
||||
|
||||
### 2.13: Staff Views Confirmed Shifts (Staff App)
|
||||
**Purpose:** Show worker's shift confirmation
|
||||
|
||||
**Observable Points:**
|
||||
- Week-by-week calendar navigation
|
||||
- Color-coded status (Confirmed, Pending, Completed)
|
||||
- Quick access to shift details and directions
|
||||
|
||||
---
|
||||
|
||||
### 2.14: Staff Clock-In to Shift (Day of Event) (Staff App)
|
||||
**Purpose:** Demonstrate the clock-in process
|
||||
|
||||
**Steps:**
|
||||
1. Navigate to the clock-in page.
|
||||
2. Use the "Clock In" slider to clock in.
|
||||
|
||||
**Observable Points:**
|
||||
- Timestamp automatically recorded
|
||||
- Status changes to "Checked In" with green indicator
|
||||
|
||||
---
|
||||
|
||||
### 2.15: Staff Clocks-Out of Shift (Day of Event) (Staff App)
|
||||
**Purpose:** Demonstrate the clock-out process and shift completion
|
||||
|
||||
**Steps:**
|
||||
1. Navigate to the clock-out page.
|
||||
2. Use the "Clock Out" slider to clock out.
|
||||
3. Navigate to the "My Shifts" section in the Shifts tab to see the updated status via the bottom navigation.
|
||||
|
||||
**Observable Points:**
|
||||
- Clock-out timestamp automatically recorded
|
||||
- Status changes to "Completed"
|
||||
|
||||
---
|
||||
|
||||
### 2.16: Staff Profile Management (Staff App)
|
||||
**Purpose:** Demonstrate worker profile features and compliance management
|
||||
|
||||
**Steps:**
|
||||
1. Navigate to Profile tab in bottom navigation
|
||||
2. Review profile sections:
|
||||
- **Profile Info:**
|
||||
- **Emergency Contact:** Name, relationship, phone number
|
||||
- **Bank Account:** Linked payment account for direct deposit
|
||||
- **Tax Forms:** W-4, I-9 compliance documents
|
||||
- **Time Card:** Historical shift records with hours and earnings
|
||||
Reference in New Issue
Block a user