# KROW Workforce Platform - Project Onboarding Master Document
> **Version:** 1.0
> **Last Updated:** 2026-01-11
> **Purpose:** Source of Truth for Team Onboarding & Sprint Planning
---
## Table of Contents
1. [Project Vision & Business Value](#1-project-vision--business-value)
2. [System Architecture (GCP Migration)](#2-system-architecture-gcp-migration)
3. [Core Domain Logic](#3-core-domain-logic)
4. [Feature Gap Analysis](#4-feature-gap-analysis)
5. [Data Connect & Development Strategy](#5-data-connect--development-strategy)
6. [Definition of Done (DoD)](#6-definition-of-done-dod)
---
## 1. Project Vision & Business Value
### 1.1 What is KROW?
KROW is a **workforce management platform** that connects businesses (clients) with temporary/gig workers (staff) for event-based staffing needs. The platform handles the complete lifecycle from job posting to payment processing.
### 1.2 The Problem We Solve
| Stakeholder | Pain Point | KROW Solution |
|-------------|------------|---------------|
| **Businesses** | Finding qualified temp workers is time-consuming and unreliable | Instant access to pre-verified workers with ratings and certifications |
| **Workers** | Inconsistent gig opportunities, delayed payments, opaque earnings | Centralized shift discovery, real-time earnings tracking, transparent payment |
| **Administrators** | Manual coordination between clients and workers, paper-based time tracking | Automated assignment, QR/NFC clock-in, digital invoicing |
### 1.3 Core Value Proposition
```
KROW = Uber for Event Staffing
```
- **For Clients:** Post events, define shifts, get matched workers, track time, pay invoices
- **For Staff:** Browse shifts, accept gigs, clock in/out, track earnings, get paid
- **For Admins:** Manage workforce, verify profiles, resolve disputes, generate reports
### 1.4 Business Model
1. **Service Fees:** Markup on worker hourly rates (configurable per business)
2. **Premium Add-ons:** Optional services (uniforms, equipment, expedited matching)
3. **Enterprise Contracts:** Long-term staffing agreements with volume discounts
### 1.5 Strategic Objective
> **Mission:** Achieve complete technical independence by consolidating the KROW platform onto a single, robust, and maintainable ecosystem: **Firebase & Google Cloud**.
**Guiding Principles:**
1. **Velocity & Focus:** Maximize productivity with Firebase Data Connect and generated SDKs
2. **Unified Backend:** Single backend (Data Connect) powers all applications (Web, iOS, Android)
3. **Scalability & Low Overhead:** Managed services minimize operational burden
4. **Data Ownership:** Full control over PostgreSQL database for complex reporting
5. **Base44 as Design Accelerator:** Treat Base44 as a prototyping tool, not a system to migrate
6. **Automation as Force Multiplier:** Automate via Makefile and CI/CD pipelines
---
## 2. System Architecture (GCP Migration)
### 2.1 Migration Overview
```
LEGACY (Digital Ocean) ──────────► NEW (Google Cloud Platform)
├── PHP/Laravel Backend ├── Firebase Data Connect (GraphQL)
├── Laravel Nova Admin ├── Cloud Functions (Business Logic)
├── GraphQL (Lighthouse) ├── Cloud Run (Heavy Compute)
├── PostgreSQL (Self-managed) ──────────► ├── Cloud SQL (Managed PostgreSQL)
├── Digital Ocean Spaces ──────────► ├── Cloud Storage
└── Firebase Auth + FCM ──────────► └── Firebase Auth + FCM (unchanged)
```
### 2.2 New Architecture Diagram
```mermaid
graph TB
subgraph Clients["Client Applications"]
direction LR
Mobile["Flutter Apps
(Client + Staff)"]
Web["Vite/React
(Business + Admin)"]
end
subgraph Firebase["Firebase Services"]
direction LR
Auth["Firebase Auth + FCM"]
DataConnect["Firebase Data Connect
GraphQL API + Generated SDKs"]
end
subgraph Backend["Backend Services"]
direction LR
CloudRun["Cloud Run"]
CloudFunctions["Cloud Functions"]
end
subgraph AI["AI Services"]
VertexAI["Vertex AI / Gemini"]
end
subgraph Data["Data Layer"]
direction LR
CloudSQL["Cloud SQL
(PostgreSQL)"]
Storage["Cloud Storage"]
end
subgraph Security["Security & Compliance"]
direction LR
SecServices["Cloud IAM | Monitoring | Secret Manager"]
Compliance["GDPR Ready | SOC 2 Type II | HIPAA Eligible"]
end
Mobile -->|"GraphQL SDK"| DataConnect
Web -->|"GraphQL SDK"| DataConnect
Mobile -.-> Auth
Web -.-> Auth
Mobile -->|"HTTP/REST"| CloudRun
Web -->|"HTTP/REST"| CloudRun
CloudFunctions -.->|"Events"| CloudRun
DataConnect --> CloudSQL
CloudRun --> CloudSQL
CloudFunctions --> CloudSQL
CloudRun --> Storage
CloudRun --> VertexAI
CloudFunctions --> VertexAI
```
### 2.3 Technology Stack Comparison
| Component | Legacy (Current) | New (Target) |
|-----------|-----------------|--------------|
| **Backend Framework** | PHP/Laravel | Firebase Data Connect + Cloud Functions |
| **API Layer** | GraphQL (Lighthouse) | Firebase Data Connect (GraphQL) |
| **Admin Panel** | Laravel Nova | Custom React Admin (or Firebase Extension) |
| **Database** | PostgreSQL (DO Droplet) | Cloud SQL (Managed PostgreSQL) |
| **File Storage** | Digital Ocean Spaces | Cloud Storage |
| **Authentication** | Firebase Auth | Firebase Auth (unchanged) |
| **Notifications** | FCM | FCM (unchanged) |
| **Mobile Apps** | Flutter | Flutter (code restructure with Melos) |
| **Web App** | Inertia.js + Vue | Vite + React |
| **AI/ML** | None | Vertex AI / Gemini |
| **Hosting** | Digital Ocean | Firebase Hosting + Cloud Run |
### 2.4 Key Architecture Decisions
1. **Firebase Data Connect as Primary API:**
- Auto-generates type-safe SDKs for all clients
- Eliminates API versioning headaches
- Direct PostgreSQL access with GraphQL abstraction
2. **Cloud Functions for Business Logic:**
- Email sending, AI invocations, file processing
- Event-driven architecture for async operations
- Clean separation from data layer
3. **PostgreSQL Retention:**
- Full data ownership and portability
- Complex queries and reporting capabilities
- Industry-standard for enterprise requirements
4. **Monorepo Structure:**
```
krow-workforce-web/
├── apps/
│ ├── web-dashboard/ # Vite + React
│ ├── mobile-client/ # Flutter (business app)
│ └── mobile-staff/ # Flutter (worker app)
├── backend/
│ ├── dataconnect/ # Firebase Data Connect schemas
│ └── functions/ # Cloud Functions
├── firebase/ # Firebase config
├── internal/
│ └── launchpad/ # Internal tools & prototypes
└── docs/ # Documentation
```
---
## 3. Core Domain Logic
### 3.1 Domain Entities Overview
The KROW platform has **49 domain entities** organized into 8 logical groups:
```
┌────────────────────────────────────────────────────────────────────┐
│ KROW DOMAIN MODEL │
├────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ USERS & │ │ BUSINESS & │ │ EVENTS & │ │
│ │ MEMBERSHIP │ │ ORGANIZATION│ │ SHIFTS │ │
│ ├─────────────┤ ├─────────────┤ ├─────────────┤ │
│ │ User │ │ Business │ │ Event │ │
│ │ Staff │ │ BusinessSet │ │ EventShift │ │
│ │ Membership │ │ Hub │ │ Position │ │
│ │ BizMember │ │ HubDept │ │ Assignment │ │
│ │ HubMember │ │ BizContract │ │ WorkSession │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ SKILLS & │ │ FINANCIAL │ │ RATINGS & │ │
│ │ CERTS │ │ PAYROLL │ │ PENALTIES │ │
│ ├─────────────┤ ├─────────────┤ ├─────────────┤ │
│ │ Skill │ │ Invoice │ │ StaffRating │ │
│ │ SkillCat │ │ InvoiceItem │ │ PenaltyLog │ │
│ │ StaffSkill │ │ InvDecline │ │ BizStaffPref│ │
│ │ Certificate │ │ StaffPayment│ │ │ │
│ │ SkillKit │ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ STAFF │ │ SUPPORT │ │
│ │ PROFILE │ │ CONFIG │ │
│ ├─────────────┤ ├─────────────┤ │
│ │ EmergencyC │ │ Addon │ │
│ │ BankAccount │ │ Tag │ │
│ │ Accessibl │ │ Media │ │
│ │ Schedule │ │ WorkingArea │ │
│ └─────────────┘ └─────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────┘
```
### 3.2 Key Entity Definitions
#### User & Authentication
| Entity | Description | Key Fields |
|--------|-------------|------------|
| **User** | Base auth entity (Firebase) | `id`, `email`, `phone`, `role` |
| **Staff** | Worker profile | `auth_provider_id`, `name`, `email`, `phone`, `status`, `address`, `avatar`, `live_photo` |
| **Membership** | Polymorphic org membership | `user_id`, `memberable_id`, `memberable_type`, `role` |
**Staff Status Flow:**
```
registered → pending → completed_profile → verified → [active | blocked | inactive]
```
#### Business & Organization
| Entity | Description | Key Fields |
|--------|-------------|------------|
| **Business** | Client company | `name`, `registration`, `status`, `avatar` |
| **BusinessSetting** | Payroll config | `prefix`, `overtime`, `clock_in`, `clock_out` |
| **Hub** | Branch location | `business_id`, `name`, `address`, `status` |
| **HubDepartment** | Dept within hub | `hub_id`, `name` |
#### Events & Shifts
| Entity | Description | Key Fields |
|--------|-------------|------------|
| **Event** | Job posting | `business_id`, `hub_id`, `name`, `date`, `status`, `contract_type` |
| **EventShift** | Work session | `event_id`, `name`, `address` |
| **EventShiftPosition** | Job opening | `shift_id`, `skill_id`, `count`, `rate`, `start_time`, `end_time`, `break` |
| **EventShiftPositionStaff** | Assignment | `staff_id`, `position_id`, `status`, `clock_in`, `clock_out` |
**Event Status Flow:**
```
draft → pending → assigned → confirmed → active → finished → completed → closed
↘ under_review
```
**Assignment Status Flow:**
```
assigned → confirmed → ongoing → completed
↘ decline_by_staff → [penalty logged]
↘ canceled_by_staff → [penalty logged]
↘ no_showed → [penalty logged]
```
#### Skills & Certifications
| Entity | Description | Key Fields |
|--------|-------------|------------|
| **Skill** | Job category | `category_id`, `name`, `price` |
| **StaffSkill** | Worker qualification | `staff_id`, `skill_id`, `level`, `experience`, `status` |
| **Certificate** | Required credential | `name`, `required` |
| **SkillKit** | Uniform/equipment req | `skill_id`, `name`, `is_required`, `type` |
**Skill Levels:** `beginner` | `skilled` | `professional`
#### Financial & Payroll
| Entity | Description | Key Fields |
|--------|-------------|------------|
| **Invoice** | Business bill | `event_id`, `business_id`, `status`, `total`, `work_amount`, `addons_amount` |
| **InvoiceItem** | Line item | `invoice_id`, `staff_id`, `work_hours`, `rate`, `amounts` |
| **StaffPayment** | Worker payout | `staff_id`, `assignment_id`, `amount`, `status`, `paid_at` |
**Invoice Status Flow:**
```
open → disputed → resolved → verified → paid/reconciled
↘ overdue
```
### 3.3 Core Business Workflows
#### Workflow 1: Event Lifecycle
```mermaid
sequenceDiagram
participant Client as Client App
participant API as Backend API
participant Admin as Admin
participant Staff as Staff App
Note over Client,API: 1. Event Creation
Client->>API: Create Event with Shifts & Positions
API-->>Client: Event Created (Draft)
Client->>API: Publish Event
API-->>Client: Event Published
Note over Admin,API: 2. Staff Assignment
Admin->>API: Assign Staff to Shift
API-->>Admin: Assignment Confirmed
API->>Staff: Notification: New Shift
Note over Staff,API: 3. Shift Acceptance
Staff->>API: Accept Shift
API-->>Staff: Shift Confirmed
Note over Client,Staff: 4. Day of Event
Client->>Client: Generate QR Code
Staff->>Staff: Scan QR Code
Staff->>API: Clock In
Staff->>API: Clock Out
Note over Client,API: 5. Post-Event
Client->>API: Rate Staff
API->>API: Generate Invoice
Client->>API: Approve Invoice
```
#### Workflow 2: Staff Onboarding
```
1. Registration (Firebase Phone Auth)
├── Create Staff record (status: registered)
└── Profile created with auth_provider_id
2. Profile Completion
├── Personal info (name, email, address)
├── Avatar upload
├── Emergency contacts
└── Bank account details
3. Skills Declaration
├── Add skills with level/experience
└── Status: pending → verified (admin)
4. Certification Upload
├── Upload certificates
└── Status: pending → verified (admin)
5. Equipment Confirmation
├── Confirm uniforms per skill
├── Confirm equipment per skill
└── Upload photos as proof
6. Profile Submission
├── Complete verification checklist
└── Status: completed_profile → verified
```
#### Workflow 3: Payroll Calculation
```
Work Hours = (clock_out - clock_in) - break_duration
Overtime Rules:
├── Regular Hours (1x): hours <= 8
├── Overtime Hours (1.5x): 8 < hours <= 10
└── Doubletime Hours (2x): hours > 10
Payment = (regular_hours × rate × 1.0)
+ (overtime_hours × rate × 1.5)
+ (doubletime_hours × rate × 2.0)
+ addons_amount
```
### 3.4 API Structure (Legacy Reference)
#### Client (Business) API
**Queries:**
- `client_hubs` - Get accessible hubs
- `client_events(status)` - Paginated events
- `client_invoices(status)` - Paginated invoices
- `client_business_skills` - Business skill catalog
**Mutations:**
- `client_create_event(input)` - Create event
- `client_publish_event(id)` - Publish event
- `track_client_clockin/clockout` - Manual time tracking
- `rate_client_staff(input)` - Rate worker
#### Staff (Worker) API
**Queries:**
- `me` - Current staff profile
- `staff_shifts(status)` - Paginated shifts
- `staff_payments(status)` - Paginated payments
- `verification_check_list` - Onboarding progress
**Mutations:**
- `accept_shift(position_id)` - Accept shift
- `decline_shift(position_id, reason)` - Decline with penalty
- `track_staff_clockin/clockout` - Time tracking
- `update_staff_*` - Profile updates
---
## 4. Feature Gap Analysis
### 4.1 Legacy Feature Inventory
#### Client Mobile App (Flutter)
| Feature | Files | Status | Priority |
|---------|-------|--------|----------|
| Event Creation & Management | 40 | Production | P0 |
| Event List & Details | 21 | Production | P0 |
| Invoice Management | 29 | Production | P0 |
| Hub Management | 11 | Production | P1 |
| Staff Assignment View | 4 | Production | P0 |
| Manual Clock In/Out | 9 | Production | P0 |
| Staff Rating | 9 | Production | P1 |
| Notifications | 12 | Production | P1 |
| Profile Management | 11 | Production | P2 |
**Total:** 272 Dart files, 24,690 LOC, 12 features
#### Staff Mobile App (Flutter)
| Feature | Files | Status | Priority |
|---------|-------|--------|----------|
| Authentication (Phone) | 9 | Production | P0 |
| Shift Management | 70 | Production | P0 |
| Earnings & Payments | 32 | Production | P0 |
| Profile (Complete) | 211 | Production | P0 |
| Check List (Verification) | 11 | Production | P1 |
| QR Scanner | 1 | Production | P0 |
| Support | 2 | Production | P2 |
**Total:** 430 Dart files, 34,676 LOC, 10 features
#### Backend (PHP/Laravel)
| Component | Count | Status |
|-----------|-------|--------|
| Eloquent Models | 49 | Production |
| Actions | 19 | Production |
| GraphQL Queries | 30+ | Production |
| GraphQL Mutations | 40+ | Production |
| Nova Resources | 20+ | Production |
**Total:** 353 PHP files, 28,675 LOC
### 4.2 Web Prototype Analysis (Source Code)
**Location:** `internal/launchpad/prototypes-src/web/`
The web prototype is a **fully functional React application** with rich business logic:
#### 4.2.1 Feature Routes (38 Routes)
| Category | Route | Component | Roles |
|----------|-------|-----------|-------|
| **Overview** | `/dashboard/admin` | AdminDashboard | Admin |
| | `/dashboard/client` | ClientDashboard | Client |
| | `/dashboard/vendor` | VendorDashboard | Vendor |
| | `/savings` | SavingsEngine | All |
| | `/performance` | VendorPerformance | Vendor, Admin |
| **Operations** | `/orders` | OrderList | Admin |
| | `/orders/client` | ClientOrderList | Client |
| | `/orders/vendor` | VendorOrderList | Vendor |
| | `/orders/:id` | OrderDetail | All |
| | `/orders/:id/edit` | EditOrder | All |
| | `/schedule` | Schedule | All |
| | `/availability` | StaffAvailability | All |
| | `/tasks` | TaskBoard | All |
| **Marketplace** | `/marketplace` | VendorMarketplace | Client, Admin |
| | `/marketplace/compare` | CompareRates | Client, Admin |
| **Workforce** | `/staff` | StaffList | All |
| | `/staff/add` | AddStaff | All |
| | `/staff/:id/edit` | EditStaff | All |
| | `/onboarding` | OnboardingFlow | All |
| | `/teams` | TeamList | All |
| | `/teams/create` | CreateTeam | All |
| | `/teams/:id` | TeamDetail | All |
| | `/compliance` | ComplianceDashboard | Vendor, Admin |
| | `/documents` | DocumentVault | Vendor, Admin |
| **Finance** | `/invoices` | InvoiceList | All |
| | `/invoices/new` | InvoiceEditor | All |
| | `/invoices/:id` | InvoiceDetail | All |
| **Business** | `/clients` | ClientList | Vendor, Admin |
| | `/clients/add` | AddClient | Vendor, Admin |
| | `/clients/:id/edit` | EditClient | Vendor, Admin |
| | `/rates` | ServiceRates | Vendor, Admin |
| **Analytics** | `/reports` | ReportsDashboard | All |
| | `/activity` | ActivityLog | Vendor, Admin |
| **Communication** | `/messages` | MessageCenter | All |
| | `/tutorials` | TutorialList | Client, Admin |
| **Support** | `/support` | SupportCenter | Client, Admin |
#### 4.2.2 Business Logic Implemented (Client-Side)
**1. Overtime Calculator** (`logic/OvertimeCalculator.ts`)
```typescript
// State-specific OT/DT rules (California vs Federal)
STATE_RULES = {
CA: { dailyOT: 8, dailyDT: 12, weeklyOT: 40, seventhDayDT: true },
DEFAULT: { dailyOT: null, weeklyOT: 40 }
}
// Returns: status (GREEN/AMBER/RED), otHours, dtHours, costImpact
```
**2. Smart Assignment Engine** (`logic/SmartAssignmentEngine.ts`)
```typescript
// Multi-factor scoring algorithm
Factors: Skill Match, Reliability Score, Vendor Priority,
Fatigue Level, Compliance, Proximity, Cost Optimization
// Features: Double-booking detection, Auto-fill shifts
```
**3. Conflict Detection** (`logic/ConflictDetection.ts`)
```typescript
// Detects: Staff overlap, Venue overlap, Buffer time violations
// Supports: Multi-day events, Time buffers, Severity levels
```
**4. Order Status Utils** (`logic/OrderStatusUtils.ts`)
- Status color mapping
- Status transition rules
**5. Double Booking Validator** (`logic/DoubleBookingValidator.ts`)
- Validates staff assignments across events
#### 4.2.3 TypeScript Data Models (30+ Types)
| Type | Fields | Maps to Legacy |
|------|--------|----------------|
| `User` | id, email, role, user_role, preferred_vendor_id, dashboard_layout | User + BusinessMember |
| `Staff` | id, employee_name, position, rating, reliability_score, vendor_id | Staff |
| `Event` | id, event_name, date, status, shifts, assigned_staff, is_rapid, buffer_time | Event |
| `Shift` | roles[] | EventShift |
| `ShiftRole` | role, count, start_time, end_time, bill_rate, pay_rate | EventShiftPosition |
| `StaffAssignment` | staff_id, staff_name, role | EventShiftPositionStaff |
| `Invoice` | id, invoice_number, status, amount, roles[], disputed_items | Invoice + InvoiceItem |
| `Business` | id, business_name, hubs[], favorite_staff, blocked_staff, erp_* | Business |
| `Vendor` | id, legal_name, region, approval_status, markup, fee, rates[] | NEW |
| `VendorRate` | id, vendor_name, role_name, client_rate, employee_wage, markup_% | NEW |
| `Team` | id, team_name, owner_id, members, hubs, favorite_staff, blocked_staff | Business context |
| `TeamMember` | id, team_id, member_name, email, role, department, hub | Membership |
| `TeamHub` | id, team_id, hub_name, departments[] | Hub + HubDepartment |
| `Task` | id, task_name, priority, status, assigned_members, files | NEW |
| `Certification` | id, employee_id, certification_type, status, expiry_date | StaffCertificate |
| `WorkerAvailability` | staff_id, availability_status, need_work_index, utilization_% | NEW |
| `Conversation` | id, subject, participants[], last_message | NEW |
| `ActivityLog` | id, title, description, activity_type, icon_type | ActivityLog |
### 4.3 Feature Gap Matrix (Updated)
| Feature Area | Legacy Mobile | Web Prototype | Gap Status |
|--------------|---------------|---------------|------------|
| **Auth & Onboarding** | Full (Phone) | Basic (Email) | Merge approaches |
| **Event/Order CRUD** | Full | Full + Enhanced | Prototype ahead |
| **Shift Management** | Full | Full + Scheduler | Prototype ahead |
| **Time Tracking (QR/NFC)** | Full | None | Legacy only |
| **Invoice Generation** | Full | Full + Templates | Prototype ahead |
| **Payroll Calculation** | Backend only | **Client-side OT calc** | Port to backend |
| **Staff Profile** | Full (211 files) | Basic | Legacy ahead |
| **Skills & Certs** | Full | Compliance Dashboard | Legacy ahead |
| **Ratings & Penalties** | Full | None explicit | Legacy only |
| **Notifications** | Full | None | Legacy only |
| **Admin Dashboard** | Nova | **3 Role Dashboards** | Prototype ahead |
| **Vendor Management** | None | **Full Marketplace** | Prototype only |
| **Smart Assignment** | None | **AI Engine** | Prototype only |
| **Conflict Detection** | None | **Full** | Prototype only |
| **Savings Engine** | None | **Full** | Prototype only |
| **Task Board** | None | **Full** | Prototype only |
| **Messaging** | None | **Full** | Prototype only |
| **Reports** | Basic | **Advanced Templates** | Prototype ahead |
| **Teams/Organizations** | Membership | **Full Team Mgmt** | Prototype ahead |
| **Worker Availability** | Schedule | **Predictive** | Prototype ahead |
### 4.4 NEW Features in Prototype (Not in Legacy)
These are **new capabilities** to be implemented:
1. **Savings Engine** - Cost optimization recommendations
2. **Vendor Marketplace** - Vendor discovery and comparison
3. **Smart Assignment Engine** - AI-powered worker matching
4. **Conflict Detection** - Staff/venue/buffer conflict alerts
5. **State-Specific OT Calculator** - California labor law compliance
6. **Task Board** - Project management within platform
7. **Rate Cards & Compare Rates** - Pricing transparency
8. **Worker Availability Prediction** - Utilization scoring
9. **Report Templates** - Scheduled, exportable reports
10. **ERP Integration Settings** - Enterprise system connectivity
11. **Multi-Dashboard by Role** - Admin/Client/Vendor views
12. **Messaging Center** - In-app communication
### 4.5 Legacy Features Missing in Prototype
These **must be ported** from legacy:
1. **Phone Authentication** - Firebase phone auth flow
2. **QR/NFC Clock In/Out** - Mobile time tracking
3. **Staff Profile Completion Wizard** - 9-step verification
4. **Skills & Skill Kits** - Uniform/equipment confirmation
5. **Certificate Upload & Verification** - Document management
6. **Penalty System** - Decline/cancel/no-show tracking
7. **Staff Rating by Business** - Performance reviews
8. **Payment Workflow** - Staff payout confirmation
9. **Emergency Contacts** - Worker safety info
10. **Bank Account Management** - Payout details
11. **Push Notifications** - FCM integration
12. **Geofencing** - Location-based clock validation
### 4.6 Migration Strategy
```
┌─────────────────────────────────────────────────────────────────┐
│ FEATURE MIGRATION PRIORITY │
├─────────────────────────────────────────────────────────────────┤
│ │
│ P0 - MUST HAVE (Sprint 3-4) │
│ ├── Auth (Phone + Email) │
│ ├── Event/Order CRUD │
│ ├── Staff Profile Basics │
│ ├── Invoice List/Detail │
│ └── Dashboard (by role) │
│ │
│ P1 - SHOULD HAVE (Sprint 5-6) │
│ ├── Clock In/Out (QR at minimum) │
│ ├── Smart Assignment │
│ ├── Conflict Detection │
│ ├── Staff Verification Workflow │
│ └── Notifications │
│ │
│ P2 - NICE TO HAVE (Sprint 7+) │
│ ├── Savings Engine │
│ ├── Vendor Marketplace │
│ ├── Advanced Reports │
│ ├── Task Board │
│ └── Messaging │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### 4.7 Mobile Prototype Analysis (Source Code)
#### 4.7.1 Mobile Client App (Flutter)
**Location:** `internal/launchpad/prototypes-src/mobile/client/`
**Routes (22 screens):**
| Category | Route | Screen | Description |
|----------|-------|--------|-------------|
| **Auth** | `/client-get-started` | GetStarted | Welcome screen |
| | `/client-sign-in` | SignIn | Email/password login |
| | `/client-sign-up` | SignUp | Registration |
| **Orders** | `/create-order` | CreateOrder | Order type selector |
| | `/create-order/rapid` | **RapidOrderFlow** | **NEW: Voice-enabled URGENT orders** |
| | `/create-order/one-time` | OneTimeOrderFlow | Single event |
| | `/create-order/recurring` | RecurringOrderFlow | Repeating schedule |
| | `/create-order/permanent` | PermanentOrderFlow | Ongoing staffing |
| **Main Nav** | `/client-coverage` | Coverage | Staffing coverage dashboard |
| | `/client-billing` | Billing | Invoice management |
| | `/client-home` | Home | Main dashboard |
| | `/client-shifts` | Shifts | Active orders |
| | `/client-reports` | Reports | Analytics hub |
| **Reports** | `/daily-ops-report` | DailyOps | **NEW: Daily operations** |
| | `/spend-report` | Spend | Cost analysis |
| | `/forecast-report` | **Forecast** | **NEW: Predictive staffing** |
| | `/performance-report` | Performance | Vendor/staff metrics |
| | `/no-show-report` | NoShow | Attendance tracking |
| | `/coverage-report-detail` | CoverageDetail | Coverage analytics |
| **Other** | `/verify-worker-attire` | **VerifyAttire** | **NEW: Uniform check** |
| | `/client-hubs` | Hubs | Location management |
| | `/client-settings` | Settings | Preferences |
**Key NEW Features:**
- **RAPID Orders** - Voice-enabled urgent staffing requests ("Need 2 cooks ASAP")
- **4 Order Types** - One-time, Rapid, Recurring, Permanent
- **Forecast Reports** - Predictive staffing needs
- **Verify Worker Attire** - Photo verification of uniforms
---
#### 4.7.2 Mobile Staff App (Flutter)
**Location:** `internal/launchpad/prototypes-src/mobile/staff/`
**Routes (35+ screens):**
| Category | Route | Screen | Description |
|----------|-------|--------|-------------|
| **Auth** | `/get-started` | GetStarted | Welcome |
| | `/phone-verification` | PhoneVerification | OTP flow |
| | `/profile-setup` | ProfileSetup | Initial setup |
| **Main Nav** | `/shifts` | Shifts | Available/assigned shifts |
| | `/payments` | Payments | Earnings overview |
| | `/worker-home` | Home | Dashboard |
| | `/clock-in` | **ClockIn** | **Swipe/NFC + GPS + Commute** |
| | `/worker-profile` | Profile | Settings hub |
| **Earnings** | `/earnings` | Earnings | Detailed breakdown |
| | `/early-pay` | **EarlyPay** | **NEW: Instant pay (5% fee)** |
| **Shifts** | `/shift-details/:id` | ShiftDetails | Shift info |
| | `/jobs` | Jobs | Job search |
| | `/availability` | Availability | Schedule preferences |
| | `/benefits` | Benefits | Perks info |
| **Profile/Onboarding** | `/personal-info` | PersonalInfo | Basic details |
| | `/emergency-contact` | EmergencyContact | Safety info |
| | `/experience` | Experience | Work history |
| | `/attire` | Attire | Uniform confirmation |
| **Profile/Compliance** | `/documents` | Documents | ID uploads |
| | `/certificates` | Certificates | Certifications |
| | `/tax-forms` | TaxForms | Tax documents hub |
| | `/taxforms/i9` | **FormI9** | **NEW: I-9 verification** |
| | `/taxforms/w4` | **FormW4** | **NEW: W-4 tax form** |
| **Profile/Finances** | `/bank-account` | BankAccount | Payout setup |
| | `/time-card` | TimeCard | Hours log |
| **Profile/Level Up** | `/krow-university` | **KrowUniversity** | **NEW: Training platform** |
| | `/trainings` | **Trainings** | **NEW: Skill courses** |
| | `/leaderboard` | **Leaderboard** | **NEW: Gamification** |
| **Profile/Support** | `/faqs` | FAQs | Help articles |
| | `/messages` | Messages | Support chat |
| | `/privacy` | Privacy | Settings |
**Key NEW Features:**
1. **Advanced Clock-In System:**
- Swipe-to-check-in UI
- NFC badge support
- **Commute Tracker** (GPS-based ETA)
- Lunch break modal
- Geofencing validation
2. **Early Pay (Earned Wage Access):**
- Request portion of earned wages early
- 5% service fee
- Enrollment flow with terms
3. **Gamification & Training:**
- **KROW University** - Training courses
- **Leaderboard** - Worker rankings
- **Trainings** - Skill development
4. **Tax Compliance:**
- **Form I-9** - Employment eligibility
- **Form W-4** - Tax withholding
5. **Enhanced Profile:**
- Time Card history
- Documents vault
- Certificate management
---
### 4.8 Complete Feature Comparison (All 3 Apps)
| Feature | Legacy Mobile | Web Prototype | Mobile Prototype |
|---------|--------------|---------------|------------------|
| **Auth - Phone** | ✅ | ❌ | ✅ |
| **Auth - Email** | ❌ | ✅ | ✅ |
| **Order Types** | 1 (basic) | 4 (one-time, rapid, recurring, permanent) | **4 types** |
| **RAPID Orders (Voice)** | ❌ | ❌ | **✅ NEW** |
| **Clock In - QR** | ✅ | ❌ | ❌ |
| **Clock In - Swipe** | ❌ | ❌ | **✅ NEW** |
| **Clock In - NFC** | ❌ | ❌ | **✅ NEW** |
| **Commute Tracker** | ❌ | ❌ | **✅ NEW** |
| **Early Pay** | ❌ | ❌ | **✅ NEW** |
| **KROW University** | ❌ | ❌ | **✅ NEW** |
| **Leaderboard** | ❌ | ❌ | **✅ NEW** |
| **Tax Forms (I-9, W-4)** | ❌ | ❌ | **✅ NEW** |
| **Forecast Reports** | ❌ | ❌ | **✅ NEW** |
| **Verify Attire** | ❌ | ❌ | **✅ NEW** |
| **Smart Assignment** | ❌ | **✅** | ❌ |
| **Conflict Detection** | ❌ | **✅** | ❌ |
| **Savings Engine** | ❌ | **✅** | ❌ |
| **Vendor Marketplace** | ❌ | **✅** | ❌ |
| **Staff Profile (complete)** | ✅ | Basic | Enhanced |
| **Penalty System** | ✅ | ❌ | ❌ |
| **Staff Rating** | ✅ | ❌ | ❌ |
### 4.9 Source Code Locations
| Component | Location | Tech |
|-----------|----------|------|
| Web Prototype Source | `internal/launchpad/prototypes-src/web/` | React + TypeScript |
| Mobile Client Prototype | `internal/launchpad/prototypes-src/mobile/client/` | Flutter + Dart |
| Mobile Staff Prototype | `internal/launchpad/prototypes-src/mobile/staff/` | Flutter + Dart |
| Legacy Client Mobile | `_legacy/apps/krow_client_context.md` | Flutter (context doc) |
| Legacy Staff Mobile | `_legacy/apps/krow_staff_context.md` | Flutter (context doc) |
| Legacy Backend | `_legacy/apps/php_backend_context.md` | PHP/Laravel |
| New Backend | `backend/dataconnect/` | Firebase Data Connect |
---
## 5. Data Connect & Development Strategy
### 5.1 Feature-Driven Schema Evolution
> **Principle:** The Data Connect schema is **not** pre-designed. It evolves iteratively as features are implemented.
```
Feature Implementation Flow:
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Pick Feature │ ──► │ Define Schema │ ──► │ Implement UI │
│ from Sprint │ │ Tables/Queries │ │ with SDK │
└──────────────────┘ └──────────────────┘ └──────────────────┘
│ │ │
│ │ │
▼ ▼ ▼
No mocks! Just enough Generated SDK
Real data for feature guarantees types
from start
```
### 5.2 No Mock Data Policy
**Why no mocks?**
1. Data Connect generates type-safe SDKs automatically
2. Mocks create drift between expected and actual schemas
3. Real data surfaces integration issues early
4. Reduces "works on my machine" problems
**Instead of mocks:**
- Use Firebase emulator suite for local development
- Seed development database with realistic test data
- Write schema migrations as features are added
### 5.3 Sprint 3 Schema Strategy
For each feature in Sprint 3:
1. **Identify Data Requirements**
- What entities does this feature need?
- What fields are required vs optional?
- What relationships exist?
2. **Write Schema Incrementally**
```gql
# backend/dataconnect/schema/event.gql
type Event @table {
id: UUID! @default(expr: "uuidV4()")
name: String!
status: EventStatus!
date: Date!
business: Business! @relation
hub: Hub @relation
shifts: [EventShift!]! @relation
createdAt: Timestamp! @default(expr: "request.time")
}
```
3. **Define Queries/Mutations**
```gql
# backend/dataconnect/queries/events.gql
query ListEvents($status: EventStatus) @auth(level: USER) {
events(where: { status: { eq: $status } }) {
id, name, status, date
business { name }
}
}
```
4. **Generate SDK & Implement UI**
```bash
firebase dataconnect:sdk:generate
```
### 5.4 Development Environment Setup
```bash
# Prerequisites
node -v # >= 20.x
pnpm -v # latest
fvm use # Flutter version management
firebase --version # >= 13.x
# Setup
git clone
cd krow-workforce-web
pnpm install
firebase login
firebase use development
# Start development
make dev # Start all services
make dev-web # Web only
make dev-mobile # Mobile emulators
make sync-prototypes # Sync visual references
```
### 5.5 Recommended Sprint 3 Feature Order
Based on minimal dependencies:
1. **Authentication Flow** (depends: Firebase Auth only)
2. **Staff Profile Basics** (depends: Auth)
3. **Event List View** (depends: Auth, basic schema)
4. **Event Creation** (depends: Auth, Events schema)
5. **Shift Assignment** (depends: Events, Staff)
6. **Time Tracking** (depends: Assignments)
7. **Invoice Generation** (depends: Completed shifts)
---
## 6. Definition of Done (DoD)
### 6.1 Feature-Level DoD
A feature is **DONE** when:
- [ ] **Schema:** Data Connect schema defined and deployed
- [ ] **SDK:** Generated SDK integrated into app
- [ ] **UI:** All screens implemented per prototype design
- [ ] **Logic:** Business logic working correctly
- [ ] **Tests:** Unit tests for critical logic (>80% coverage)
- [ ] **Integration:** E2E test for happy path
- [ ] **Security:** Auth rules validated
- [ ] **Accessibility:** Basic a11y compliance
- [ ] **Documentation:** API documented in schema comments
- [ ] **Review:** Code reviewed and approved
### 6.2 Sprint-Level DoD
A sprint is **DONE** when:
- [ ] All planned features meet Feature DoD
- [ ] No P0 bugs in staging environment
- [ ] Performance: <3s initial load, <500ms interactions
- [ ] Security audit passed (no critical vulnerabilities)
- [ ] Staging deployed and validated
- [ ] Demo-ready for stakeholders
- [ ] Documentation updated
### 6.3 Code Quality Standards
| Aspect | Standard |
|--------|----------|
| **Linting** | Zero ESLint/Dart analyzer errors |
| **Formatting** | Prettier (JS/TS), dart format |
| **Types** | Strict TypeScript, no `any` |
| **Commits** | Conventional commits format |
| **PRs** | Template completed, 1+ approval |
| **Tests** | Unit + Integration for new code |
### 6.4 Commit Message Format
```
():
[optional body]
[optional footer]
```
**Types:** `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`
**Examples:**
```
feat(events): add event creation form
fix(auth): handle token expiration correctly
docs(readme): update setup instructions
```
### 6.5 Branch Strategy
```
main (production)
└── dev (staging)
└── feature/KROW-123-event-creation
└── feature/KROW-124-shift-management
└── fix/KROW-125-clock-in-bug
```
### 6.6 PR Checklist
```markdown
## PR Checklist
- [ ] Code follows project conventions
- [ ] Self-reviewed changes
- [ ] Added/updated tests
- [ ] Documentation updated if needed
- [ ] No console.log/print statements
- [ ] Sensitive data not hardcoded
- [ ] Tested on emulator/device
```
---
## Appendix A: Entity Relationship Summary
```
User (1) ─── (M) Membership ──┬── Business
├── Hub
└── HubDepartment
Staff (1) ──┬── (M) StaffSkill ─── Skill ─── SkillCategory
│ └── (M) StaffSkillKit ─── SkillKit
├── (M) StaffCertificate ─── Certificate
├── (1) StaffBankAccount
├── (1) StaffAccessibility
├── (M) StaffSchedule
├── (M) StaffEmergencyContact
└── (M) EventShiftPositionStaff
Business (1) ──┬── (1) BusinessSetting
├── (1) BusinessContact
├── (M) BusinessContract
├── (M) Hub ──── (M) HubDepartment
└── (M) Event ──── (M) EventShift ──── (M) EventShiftPosition
│
└── (M) Invoice ──── (M) InvoiceItem
```
---
## Appendix B: Status Enums Reference
### Event Status
`draft` → `pending` → `assigned` → `confirmed` → `active` → `finished` → `completed` → `closed`
### Assignment Status
`assigned` | `confirmed` | `ongoing` | `completed` | `canceled_by_staff` | `decline_by_staff` | `canceled_by_business` | `canceled_by_admin` | `requested_replace` | `no_showed`
### Staff Status
`registered` | `pending` | `verified` | `blocked` | `inactive` | `completed_profile`
### Invoice Status
`open` | `disputed` | `resolved` | `verified` | `overdue` | `reconciled` | `paid`
### Payment Status
`new` | `confirmed_by_admin` | `confirmed_by_staff` | `decline_by_staff` | `sent` | `paid` | `failed` | `canceled`
---
## Appendix C: Key Files Reference
| Purpose | Location |
|---------|----------|
| Vision document | `docs/00-vision.md` |
| Backend API spec (legacy) | `docs/01-backend-api-specification.md` |
| CI/CD config | `docs/02-codemagic-env-vars.md` |
| Contributing guide | `docs/03-contributing.md` |
| Prototype sync | `docs/04-sync-prototypes.md` |
| Legacy PHP context | `_legacy/apps/php_backend_context.md` |
| Legacy Client context | `_legacy/apps/krow_client_context.md` |
| Legacy Staff context | `_legacy/apps/krow_staff_context.md` |
| Architecture diagrams | `internal/launchpad/assets/diagrams/` |
| Data Connect schemas | `backend/dataconnect/` |
---
*This document is the source of truth for team onboarding. Update it as the project evolves.*