3
.gitignore
vendored
3
.gitignore
vendored
@@ -165,6 +165,9 @@ internal/launchpad/prototypes/web/*
|
|||||||
internal/launchpad/prototypes/mobile/**/*
|
internal/launchpad/prototypes/mobile/**/*
|
||||||
!internal/launchpad/prototypes/mobile/**/.keep
|
!internal/launchpad/prototypes/mobile/**/.keep
|
||||||
|
|
||||||
|
# Prototype Source Code (synced for AI/Claude context, not for version control)
|
||||||
|
internal/launchpad/prototypes-src/
|
||||||
|
|
||||||
# Temporary migration artifacts
|
# Temporary migration artifacts
|
||||||
_legacy/
|
_legacy/
|
||||||
krow-workforce-export-latest/
|
krow-workforce-export-latest/
|
||||||
|
|||||||
74
backend/dataconnect/docs/client_app_diagram.mmd
Normal file
74
backend/dataconnect/docs/client_app_diagram.mmd
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
flowchart LR
|
||||||
|
|
||||||
|
subgraph C1["Login"]
|
||||||
|
S_client_sign_in["client_sign_in_screen.dart"]
|
||||||
|
S_client_sign_in --> S_client_sign_in_Q["Queries<br/>* user - getUserById<br/>* business - getBusinessesByUserId"]
|
||||||
|
S_client_sign_in --> S_client_sign_in_F["Firebase<br/>* user - auth"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C2["Create account"]
|
||||||
|
S_client_sign_up["client_sign_up_screen.dart"]
|
||||||
|
S_client_sign_up --> S_client_sign_up_Q["Queries<br/>* business - getBusinessesByUserId"]
|
||||||
|
S_client_sign_up --> S_client_sign_up_M["Mutations<br/>* user - createUser<br/>* business - createBusiness"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C3["Edit account"]
|
||||||
|
S_edit_account_na["manual_or_unknown_screen.dart"]
|
||||||
|
S_edit_account_na --> S_edit_account_na_M["Mutations<br/>* business - updateBusiness"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C4["Profile"]
|
||||||
|
S_client_settings["client_settings_screen.dart"]
|
||||||
|
S_client_settings --> S_client_settings_Q["Queries<br/>* user - getUserById<br/>* business - getBusinessesByUserId"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C5["Hubs"]
|
||||||
|
S_client_hubs["client_hubs_screen.dart"]
|
||||||
|
S_client_hubs --> S_client_hubs_Q["Queries<br/>* hub - getHubsByOwnerId"]
|
||||||
|
S_client_hubs --> S_client_hubs_M["Mutations<br/>* hub - createHub<br/>* hub - updateHub<br/>* hub - deleteHub"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C6["Orders"]
|
||||||
|
S_client_shifts["client_shifts_screen.dart"]
|
||||||
|
S_client_shifts --> S_client_shifts_Q["Queries<br/>* order - getOrdersByOwnerId"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C7["RAPID Order"]
|
||||||
|
S_rapid_order["rapid_order_flow_page.dart"]
|
||||||
|
S_rapid_order --> S_rapid_order_M["Mutations<br/>* order - createOrder"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C8["One-time Order"]
|
||||||
|
S_one_time["one_time_order_flow_page.dart"]
|
||||||
|
S_one_time --> S_one_time_Q["Queries<br/>* role - listRolesByOwnerId"]
|
||||||
|
S_one_time --> S_one_time_M["Mutations<br/>* position - createPosition<br/>* order - createOrder"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C9["Permanent Placement"]
|
||||||
|
S_permanent["permanent_order_flow_page.dart"]
|
||||||
|
S_permanent --> S_permanent_Q["Queries<br/>* role - listRolesByOwnerId"]
|
||||||
|
S_permanent --> S_permanent_M["Mutations<br/>* position - createPosition<br/>* order - createOrder"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C10["Recurring Order"]
|
||||||
|
S_recurring["recurring_order_flow_page.dart"]
|
||||||
|
S_recurring --> S_recurring_Q["Queries<br/>* role - listRolesByOwnerId"]
|
||||||
|
S_recurring --> S_recurring_M["Mutations<br/>* position - createPosition<br/>* order - createOrder"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C11["Billing"]
|
||||||
|
S_billing["client_billing_screen.dart"]
|
||||||
|
S_billing --> S_billing_Q["Queries<br/>* account - getAccountsByOwnerId<br/>* invoice - getInvoicesByOwnerId<br/>* recentPayment - filterRecentPayments"]
|
||||||
|
S_billing --> S_billing_M["Mutations<br/>* account - createAccount<br/>* account - updateAccount<br/>* account - deleteAccount"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C12["Coverage"]
|
||||||
|
S_coverage["coverage_dashboard.dart"]
|
||||||
|
S_coverage --> S_coverage_Q["Queries<br/>* order - getOrdersByOwnerId<br/>* shift - filterShifts<br/>* application - getApplicationsByShiftId"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph C13["Home"]
|
||||||
|
S_client_home["client_home_screen.dart"]
|
||||||
|
S_client_home --> S_client_home_Q["Queries<br/>* order - getOrdersByOwnerId<br/>* shift - filterShifts<br/>* application - getApplicationsByShiftId<br/>* recentPayment - filterRecentPayments"]
|
||||||
|
S_client_home --> S_client_home_M["Mutations<br/>* order - createOrder"]
|
||||||
|
end
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
flowchart LR
|
||||||
|
subgraph "Profile & Onboarding"
|
||||||
|
User --> User_Q["Queries<br/>- listUsers<br/>- getUserById"]
|
||||||
|
User --> User_M["Mutations<br/>- createUser<br/>- updateUser<br/>- deleteUser"]
|
||||||
|
Staff --> Staff_Q["Queries<br/>- listStaff<br/>- getStaffById<br/>- getStaffByUserId"]
|
||||||
|
Staff --> Staff_M["Mutations<br/>- createStaff<br/>- updateStaff<br/>- deleteStaff"]
|
||||||
|
Contact --> Contact_Q["Queries<br/>- listContacts<br/>- getContactById<br/>- listContactsByStaffId"]
|
||||||
|
Contact --> Contact_M["Mutations<br/>- createContact<br/>- updateContact<br/>- deleteContact"]
|
||||||
|
AttireOption --> AttireOption_Q["Queries<br/>- listAttireOptions<br/>- getAttireOptionById"]
|
||||||
|
AttireOption --> AttireOption_M["Mutations<br/>- createAttireOption<br/>- updateAttireOption<br/>- deleteAttireOption"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "Compliance"
|
||||||
|
Document --> Document_Q["Queries<br/>- listDocuments<br/>- getDocumentById<br/>- listDocumentsByStaffId"]
|
||||||
|
Document --> Document_M["Mutations<br/>- createDocument<br/>- updateDocument<br/>- deleteDocument"]
|
||||||
|
Certificate --> Certificate_Q["Queries<br/>- listCertificates<br/>- getCertificateById<br/>- listCertificatesByStaffId"]
|
||||||
|
Certificate --> Certificate_M["Mutations<br/>- CreateCertificate<br/>- UpdateCertificate<br/>- DeleteCertificate"]
|
||||||
|
TaxForm --> TaxForm_Q["Queries<br/>- listTaxForms<br/>- getTaxFormById<br/>- getTaxFormsByStaffId<br/>- filterTaxForms"]
|
||||||
|
TaxForm --> TaxForm_M["Mutations<br/>- createTaxForm<br/>- updateTaxForm<br/>- deleteTaxForm"]
|
||||||
|
RequiredDoc --> RequiredDoc_Q["Queries<br/>- listRequiredDocs<br/>- getRequiredDocById<br/>- listRequiredDocsByUserId"]
|
||||||
|
RequiredDoc --> RequiredDoc_M["Mutations<br/>- createRequiredDoc<br/>- updateRequiredDoc<br/>- deleteRequiredDoc"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "Finances"
|
||||||
|
Account --> Account_Q["Queries<br/>- listAccounts<br/>- getAccountById<br/>- listAccountsByOwnerId"]
|
||||||
|
Account --> Account_M["Mutations<br/>- createAccount<br/>- updateAccount<br/>- deleteAccount"]
|
||||||
|
TimeSheet --> TimeSheet_Q["Queries<br/>- listTimeSheets<br/>- getTimeSheetById<br/>- listTimeSheetsByStaffId"]
|
||||||
|
TimeSheet --> TimeSheet_M["Mutations<br/>- createTimeSheet<br/>- updateTimeSheet<br/>- deleteTimeSheet"]
|
||||||
|
RecentPayment --> RecentPayment_Q["Queries<br/>- listRecentPayments<br/>- getRecentPaymentById<br/>- listRecentPaymentsByUserId"]
|
||||||
|
RecentPayment --> RecentPayment_M["Mutations<br/>- createRecentPayment<br/>- updateRecentPayment<br/>- deleteRecentPayment"]
|
||||||
|
Invoice --> Invoice_Q["Queries<br/>- listInvoices<br/>- getInvoiceById"]
|
||||||
|
Invoice --> Invoice_M["Mutations<br/>- createInvoice<br/>- updateInvoice<br/>- deleteInvoice"]
|
||||||
|
InvoiceTemplate --> InvoiceTemplate_Q["Queries<br/>- listInvoiceTemplates<br/>- getInvoiceTemplateById"]
|
||||||
|
InvoiceTemplate --> InvoiceTemplate_M["Mutations<br/>- createInvoiceTemplate<br/>- updateInvoiceTemplate<br/>- deleteInvoiceTemplate"]
|
||||||
|
VendorRate --> VendorRate_Q["Queries<br/>- listVendorRates<br/>- getVendorRateById"]
|
||||||
|
VendorRate --> VendorRate_M["Mutations<br/>- createVendorRate<br/>- updateVendorRate<br/>- deleteVendorRate"]
|
||||||
|
CustomRateCard --> CustomRateCard_Q["Queries<br/>- listCustomRateCards<br/>- getCustomRateCardById"]
|
||||||
|
CustomRateCard --> CustomRateCard_M["Mutations<br/>- createCustomRateCard<br/>- updateCustomRateCard<br/>- deleteCustomRateCard"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "Shifts & Work"
|
||||||
|
Shift --> Shift_Q["Queries<br/>- listShifts<br/>- getShiftById<br/>- filterShifts"]
|
||||||
|
Shift --> Shift_M["Mutations<br/>- CreateShift<br/>- UpdateShift<br/>- DeleteShift"]
|
||||||
|
Application --> Application_Q["Queries<br/>- getApplicationById<br/>- listApplicationsByStaffId"]
|
||||||
|
Application --> Application_M["Mutations<br/>- createApplication<br/>- updateApplication<br/>- deleteApplication"]
|
||||||
|
StaffShift --> StaffShift_Q["Queries<br/>- getMyShifts<br/>- getStaffShiftById<br/>- getStaffShiftsByShiftId"]
|
||||||
|
StaffShift --> StaffShift_M["Mutations<br/>- createStaffShift<br/>- updateStaffShift<br/>- deleteStaffShift"]
|
||||||
|
StaffAvailability --> StaffAvailability_Q["Queries<br/>- listStaffAvailabilities<br/>- getStaffAvailabilityById<br/>- getStaffAvailabilityByStaffId"]
|
||||||
|
StaffAvailability --> StaffAvailability_M["Mutations<br/>- createStaffAvailability<br/>- updateStaffAvailability<br/>- deleteStaffAvailability"]
|
||||||
|
Assignment --> Assignment_Q["Queries<br/>- listAssignments<br/>- getAssignmentById<br/>- listAssignmentsByStaffId"]
|
||||||
|
Assignment --> Assignment_M["Mutations<br/>- CreateAssignment<br/>- UpdateAssignment<br/>- DeleteAssignment"]
|
||||||
|
Order --> Order_Q["Queries<br/>- listOrders<br/>- getOrderById"]
|
||||||
|
Order --> Order_M["Mutations<br/>- createOrder<br/>- updateOrder<br/>- deleteOrder"]
|
||||||
|
Position --> Position_Q["Queries<br/>- listPositions<br/>- getPositionById<br/>- listPositionsByOrderId"]
|
||||||
|
Position --> Position_M["Mutations<br/>- createPosition<br/>- updatePosition<br/>- deletePosition"]
|
||||||
|
Category --> Category_Q["Queries<br/>- listCategories<br/>- getCategoryById"]
|
||||||
|
Category --> Category_M["Mutations<br/>- createCategory<br/>- updateCategory<br/>- deleteCategory"]
|
||||||
|
Role --> Role_Q["Queries<br/>- listRoles<br/>- getRoleById"]
|
||||||
|
Role --> Role_M["Mutations<br/>- createRole<br/>- updateRole<br/>- deleteRole"]
|
||||||
|
RoleCategory --> RoleCategory_Q["Queries<br/>- listRoleCategories<br/>- getRoleCategoryById"]
|
||||||
|
RoleCategory --> RoleCategory_M["Mutations<br/>- createRoleCategory<br/>- updateRoleCategory<br/>- deleteRoleCategory"]
|
||||||
|
Schedule --> Schedule_Q["Queries<br/>- listSchedules<br/>- getScheduleById<br/>- getScheduleByPositionId"]
|
||||||
|
Schedule --> Schedule_M["Mutations<br/>- createSchedule<br/>- updateSchedule<br/>- deleteSchedule"]
|
||||||
|
Workforce --> Workforce_Q["Queries"]
|
||||||
|
Workforce --> Workforce_M["Mutations"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "Learning"
|
||||||
|
Course --> Course_Q["Queries<br/>- listCourses<br/>- getCourseById<br/>- filterCourses"]
|
||||||
|
Course --> Course_M["Mutations<br/>- createCourse<br/>- updateCourse<br/>- deleteCourse"]
|
||||||
|
Level --> Level_Q["Queries<br/>- listLevels<br/>- getLevelById"]
|
||||||
|
Level --> Level_M["Mutations<br/>- createLevel<br/>- updateLevel<br/>- deleteLevel"]
|
||||||
|
StaffCourse --> StaffCourse_Q["Queries<br/>- getStaffCourseById<br/>- listStaffCoursesByStaffId<br/>- listStaffCoursesByCourseId<br/>- getStaffCourseByStaffAndCourse"]
|
||||||
|
StaffCourse --> StaffCourse_M["Mutations<br/>- createStaffCourse<br/>- updateStaffCourse<br/>- deleteStaffCourse"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "Benefits"
|
||||||
|
BenefitsData --> BenefitsData_Q["Queries<br/>- listBenefitsData<br/>- getBenefitsDataById<br/>- getBenefitsDataByStaffId"]
|
||||||
|
BenefitsData --> BenefitsData_M["Mutations<br/>- createBenefitsData<br/>- updateBenefitsData<br/>- deleteBenefitsData"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "Business & Vendors"
|
||||||
|
Business --> Business_Q["Queries<br/>- listBusinesses<br/>- getBusinessById<br/>- getBusinessesByUserId"]
|
||||||
|
Business --> Business_M["Mutations<br/>- createBusiness<br/>- updateBusiness<br/>- deleteBusiness"]
|
||||||
|
Vendor --> Vendor_Q["Queries<br/>- listVendors<br/>- getVendorById"]
|
||||||
|
Vendor --> Vendor_M["Mutations<br/>- createVendor<br/>- updateVendor<br/>- deleteVendor"]
|
||||||
|
Hub --> Hub_Q["Queries<br/>- listHubs<br/>- getHubById"]
|
||||||
|
Hub --> Hub_M["Mutations<br/>- createHub<br/>- updateHub<br/>- deleteHub"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "Teams"
|
||||||
|
Team --> Team_Q["Queries<br/>- listTeams<br/>- getTeamById"]
|
||||||
|
Team --> Team_M["Mutations<br/>- createTeam<br/>- updateTeam<br/>- deleteTeam"]
|
||||||
|
TeamMember --> TeamMember_Q["Queries<br/>- listTeamMembers<br/>- getTeamMemberById<br/>- listTeamMembersByTeamId"]
|
||||||
|
TeamMember --> TeamMember_M["Mutations<br/>- createTeamMember<br/>- updateTeamMember<br/>- deleteTeamMember"]
|
||||||
|
MemberTask --> MemberTask_Q["Queries<br/>- getMyTasks<br/>- getMemberTaskById<br/>- getMemberTasksByTaskId"]
|
||||||
|
MemberTask --> MemberTask_M["Mutations<br/>- createMemberTask<br/>- updateMemberTask<br/>- deleteMemberTask"]
|
||||||
|
TeamHub --> TeamHub_Q["Queries<br/>- listTeamHubs<br/>- getTeamHubById<br/>- listTeamHubsByTeamId"]
|
||||||
|
TeamHub --> TeamHub_M["Mutations<br/>- createTeamHub<br/>- updateTeamHub<br/>- deleteTeamHub"]
|
||||||
|
Task --> Task_Q["Queries<br/>- listTasks<br/>- getTaskById"]
|
||||||
|
Task --> Task_M["Mutations<br/>- createTask<br/>- updateTask<br/>- deleteTask"]
|
||||||
|
TaskComment --> TaskComment_Q["Queries<br/>- listTaskComments<br/>- getTaskCommentById<br/>- listTaskCommentsByTaskId"]
|
||||||
|
TaskComment --> TaskComment_M["Mutations<br/>- createTaskComment<br/>- updateTaskComment<br/>- deleteTaskComment"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "Communication"
|
||||||
|
Conversation --> Conversation_Q["Queries<br/>- listConversations<br/>- getConversationById<br/>- getConversationsByUserId"]
|
||||||
|
Conversation --> Conversation_M["Mutations<br/>- createConversation<br/>- updateConversation<br/>- deleteConversation"]
|
||||||
|
Message --> Message_Q["Queries<br/>- listMessages<br/>- getMessageById<br/>- listMessagesByConversationId"]
|
||||||
|
Message --> Message_M["Mutations<br/>- createMessage<br/>- updateMessage<br/>- deleteMessage"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "Others"
|
||||||
|
ActivityLog --> ActivityLog_Q["Queries<br/>- listActivityLogs<br/>- getActivityLogById<br/>- listActivityLogsByUserId"]
|
||||||
|
ActivityLog --> ActivityLog_M["Mutations<br/>- createActivityLog<br/>- updateActivityLog<br/>- deleteActivityLog"]
|
||||||
|
ClientFeedback --> ClientFeedback_Q["Queries<br/>- listClientFeedbacks<br/>- getClientFeedbackById"]
|
||||||
|
ClientFeedback --> ClientFeedback_M["Mutations<br/>- createClientFeedback<br/>- updateClientFeedback<br/>- deleteClientFeedback"]
|
||||||
|
FaqData --> FaqData_Q["Queries<br/>- listFaqDatas<br/>- getFaqDataById"]
|
||||||
|
FaqData --> FaqData_M["Mutations<br/>- createFaqData<br/>- updateFaqData<br/>- deleteFaqData"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph "Reporting"
|
||||||
|
Reports --> Reports_Q["Queries<br/>- getCoverageReport<br/>- getNoShowReport<br/>- getSpendReport<br/>- getForecastReport<br/>- getPerformanceReport<br/>- getDailyOpsReport"]
|
||||||
|
end
|
||||||
271
backend/dataconnect/docs/dataconnect.mmd
Normal file
271
backend/dataconnect/docs/dataconnect.mmd
Normal file
@@ -0,0 +1,271 @@
|
|||||||
|
erDiagram
|
||||||
|
User {
|
||||||
|
String id PK
|
||||||
|
String email
|
||||||
|
String fullName
|
||||||
|
Timestamp createdDate
|
||||||
|
}
|
||||||
|
Business {
|
||||||
|
UUID id PK
|
||||||
|
String userId FK
|
||||||
|
String businessName
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Vendor {
|
||||||
|
UUID id PK
|
||||||
|
String userId FK
|
||||||
|
String companyName
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Staff {
|
||||||
|
UUID id PK
|
||||||
|
String userId FK
|
||||||
|
UUID hubId FK
|
||||||
|
UUID ownerId FK
|
||||||
|
String fullName
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Shift {
|
||||||
|
UUID id PK
|
||||||
|
UUID orderId FK
|
||||||
|
UUID ownerId FK
|
||||||
|
ShiftStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Order {
|
||||||
|
UUID id PK
|
||||||
|
UUID ownerId FK
|
||||||
|
UUID hubId FK
|
||||||
|
OrderStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Position {
|
||||||
|
UUID id PK
|
||||||
|
UUID orderId FK
|
||||||
|
UUID roleId FK
|
||||||
|
UUID ownerId FK
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Task {
|
||||||
|
UUID id PK
|
||||||
|
UUID ownerId FK
|
||||||
|
TaskStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Team {
|
||||||
|
UUID id PK
|
||||||
|
String ownerId FK
|
||||||
|
String teamName
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
TeamMember {
|
||||||
|
UUID id PK
|
||||||
|
UUID teamId FK
|
||||||
|
UUID hubId FK
|
||||||
|
String memberName
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Hub {
|
||||||
|
UUID id PK
|
||||||
|
UUID ownerId FK
|
||||||
|
String name
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Account {
|
||||||
|
UUID id PK
|
||||||
|
UUID ownerId FK "polymorphic ownerId"
|
||||||
|
String bank
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Document {
|
||||||
|
UUID id PK
|
||||||
|
UUID staffId FK
|
||||||
|
DocumentStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Certificate {
|
||||||
|
UUID id PK
|
||||||
|
UUID staffId FK
|
||||||
|
CertificateStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Contact {
|
||||||
|
UUID id PK
|
||||||
|
UUID staffId FK
|
||||||
|
String name
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
BenefitsData {
|
||||||
|
UUID id PK
|
||||||
|
UUID staffId FK
|
||||||
|
String title
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Course {
|
||||||
|
UUID id PK
|
||||||
|
String title
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
TaxForm {
|
||||||
|
UUID id PK
|
||||||
|
UUID staffId FK
|
||||||
|
TaxFormStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
TimeSheet {
|
||||||
|
UUID id PK
|
||||||
|
UUID staffId FK
|
||||||
|
UUID shiftId FK
|
||||||
|
TimeSheetStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Invoice {
|
||||||
|
UUID id PK
|
||||||
|
UUID ownerId FK
|
||||||
|
InvoiceStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Assignment {
|
||||||
|
UUID id PK
|
||||||
|
UUID staffId FK
|
||||||
|
UUID ownerId FK
|
||||||
|
AssignmentStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Conversation {
|
||||||
|
UUID id PK
|
||||||
|
String subject
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Message {
|
||||||
|
UUID id PK
|
||||||
|
UUID conversationId FK
|
||||||
|
String senderId
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Role {
|
||||||
|
UUID id PK
|
||||||
|
UUID ownerId FK
|
||||||
|
String name
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
RecentPayment {
|
||||||
|
UUID id PK
|
||||||
|
UUID payedUserId FK
|
||||||
|
UUID ownerId FK
|
||||||
|
RecentPaymentStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
RequiredDoc {
|
||||||
|
UUID id PK
|
||||||
|
UUID ownerId FK
|
||||||
|
ReqDocumentStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
VendorRate {
|
||||||
|
UUID id PK
|
||||||
|
UUID vendorId FK
|
||||||
|
String roleName
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Schedule {
|
||||||
|
UUID id PK
|
||||||
|
UUID positionId FK
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
TaskComment {
|
||||||
|
UUID id PK
|
||||||
|
UUID taskId FK
|
||||||
|
String authorName
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
TeamHub {
|
||||||
|
UUID id PK
|
||||||
|
UUID teamId FK
|
||||||
|
String hubName
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
Application {
|
||||||
|
UUID id PK
|
||||||
|
UUID shiftId FK
|
||||||
|
UUID staffId FK
|
||||||
|
ApplicationStatus status
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
StaffShift {
|
||||||
|
UUID id PK
|
||||||
|
UUID staffId FK
|
||||||
|
UUID shiftId FK
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
MemberTask {
|
||||||
|
UUID id PK
|
||||||
|
UUID teamMemberId FK
|
||||||
|
UUID taskId FK
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
StaffCourse {
|
||||||
|
UUID id PK
|
||||||
|
UUID staffId FK
|
||||||
|
UUID courseId FK
|
||||||
|
Timestamp createdAt
|
||||||
|
}
|
||||||
|
|
||||||
|
User ||--|{ Staff : "has profile"
|
||||||
|
User ||--|{ Vendor : "can be"
|
||||||
|
User ||--|{ Business : "can be"
|
||||||
|
User ||--o{ ActivityLog : "generates"
|
||||||
|
|
||||||
|
Business ||--o{ "Order" : "creates"
|
||||||
|
Business ||--o{ Invoice : "receives"
|
||||||
|
Business ||--o{ Task : "owns"
|
||||||
|
Business ||--o{ Hub : "owns"
|
||||||
|
Business ||--o{ Role : "defines"
|
||||||
|
Business ||--o{ Shift : "posts"
|
||||||
|
Business ||--o{ Staff : "employs"
|
||||||
|
Business ||--o{ Account : "owns"
|
||||||
|
|
||||||
|
Vendor ||--o{ VendorRate : "defines"
|
||||||
|
Vendor ||--o{ Task : "owns"
|
||||||
|
Vendor ||--o{ Hub : "owns"
|
||||||
|
Vendor ||--o{ Role : "defines"
|
||||||
|
Vendor ||--o{ Shift : "posts"
|
||||||
|
Vendor ||--o{ Staff : "employs"
|
||||||
|
Vendor ||--o{ Account : "owns"
|
||||||
|
|
||||||
|
Staff ||--o{ Document : "has"
|
||||||
|
Staff ||--o{ Certificate : "holds"
|
||||||
|
Staff ||--o{ Contact : "has emergency"
|
||||||
|
Staff ||--o{ BenefitsData : "accrues"
|
||||||
|
Staff ||--o{ TaxForm : "submits"
|
||||||
|
Staff ||--o{ TimeSheet : "fills"
|
||||||
|
Staff ||--o{ Assignment : "receives"
|
||||||
|
Staff ||--o{ Account : "owns"
|
||||||
|
Staff ||--o{ RecentPayment : "is paid to"
|
||||||
|
Staff ||--o{ RequiredDoc : "owns"
|
||||||
|
Staff ||--o{ Application : "submits"
|
||||||
|
Hub ||--o{ Staff : "is based at"
|
||||||
|
|
||||||
|
Shift ||--o{ TimeSheet : "generates"
|
||||||
|
Shift ||--o{ Application : "receives"
|
||||||
|
|
||||||
|
"Order" ||--o{ Shift : "contains"
|
||||||
|
"Order" ||--o{ Position : "requires"
|
||||||
|
|
||||||
|
Task ||--o{ TaskComment : "has"
|
||||||
|
|
||||||
|
Team ||--o{ TeamMember : "has"
|
||||||
|
Team ||--o{ TeamHub : "operates in"
|
||||||
|
|
||||||
|
Conversation ||--o{ Message : "contains"
|
||||||
|
|
||||||
|
Position ||--o{ Schedule : "has"
|
||||||
|
Role ||--o{ Position : "is for"
|
||||||
|
|
||||||
|
%% Join Tables
|
||||||
|
Staff ||--|{ StaffShift : "works"
|
||||||
|
Shift ||--|{ StaffShift : "is worked by"
|
||||||
|
Staff ||--|{ StaffCourse : "enrolls in"
|
||||||
|
Course ||--|{ StaffCourse : "is taken by"
|
||||||
|
TeamMember ||--|{ MemberTask : "assigned to"
|
||||||
|
Task ||--|{ MemberTask : "is assigned to"
|
||||||
121
backend/dataconnect/docs/staff_app_diagram.mmd
Normal file
121
backend/dataconnect/docs/staff_app_diagram.mmd
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
flowchart LR
|
||||||
|
|
||||||
|
subgraph L1["login/create user"]
|
||||||
|
S_auth_phone["phone_verification_screen.dart"]
|
||||||
|
S_auth_phone --> S_auth_phone_Q["Queries<br/>* user - getUserById<br/>* staff - getStaffByUserId"]
|
||||||
|
S_auth_phone --> S_auth_phone_M["Mutations<br/>* user - createUser"]
|
||||||
|
S_auth_phone --> S_auth_phone_F["Firebase<br/>* user - auth"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L2["Profile"]
|
||||||
|
S_worker_profile["worker_profile_screen.dart"]
|
||||||
|
S_worker_profile --> S_worker_profile_Q["Queries<br/>* user - getUserById<br/>* staff - getStaffByUserId"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L3["Personal info"]
|
||||||
|
S_personal_info["personal_info_screen.dart"]
|
||||||
|
S_personal_info --> S_personal_info_Q["Queries<br/>* staff - getStaffByUserId"]
|
||||||
|
S_personal_info --> S_personal_info_M["Mutations<br/>* staff - UpdateStaff"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L4["Emergency Contact"]
|
||||||
|
S_emergency["emergency_contact_screen.dart"]
|
||||||
|
S_emergency --> S_emergency_Q["Queries<br/>* contact - getContactsByStaffId"]
|
||||||
|
S_emergency --> S_emergency_M["Mutations<br/>* contact - updateContact<br/>* contact - createContact<br/>* contact - deleteContact"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L5["Experience & skills"]
|
||||||
|
S_experience["experience_screen.dart"]
|
||||||
|
S_experience --> S_experience_Q["Queries<br/>* staff - getStaffByUserId"]
|
||||||
|
S_experience --> S_experience_M["Mutations<br/>* staff - UpdateStaff"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L6["Attire"]
|
||||||
|
S_attire["attire_screen.dart"]
|
||||||
|
S_attire --> S_attire_Q["Queries<br/>* attireOption - listAttireOptions<br/>* staff - getStaffByUserId"]
|
||||||
|
S_attire --> S_attire_M["Mutations<br/>* staff - UpdateStaff"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L7["Documents"]
|
||||||
|
S_documents["documents_screen.dart"]
|
||||||
|
S_documents --> S_documents_Q["Queries<br/>* document - getDocumentsByStaffId"]
|
||||||
|
S_documents --> S_documents_M["Mutations<br/>* document - updateDocument"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L8["Certificates"]
|
||||||
|
S_certificates["certificates_screen.dart"]
|
||||||
|
S_certificates --> S_certificates_Q["Queries<br/>* certificate - listCertificatesByStaffId"]
|
||||||
|
S_certificates --> S_certificates_M["Mutations<br/>* certificate - UpdateCertificate<br/>* certificate - CreateCertificate<br/>* certificate - DeleteCertificate"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L9["Tax Documents"]
|
||||||
|
S_tax_forms["tax_forms_screen.dart"]
|
||||||
|
S_tax_forms --> S_tax_forms_Q["Queries<br/>* taxForm - getTaxFormsBystaffId"]
|
||||||
|
S_tax_forms --> S_tax_forms_M["Mutations<br/>* taxForm - createTaxForm<br/>* taxForm - updateTaxForm"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L10["KROW University"]
|
||||||
|
S_uni["krow_university_screen.dart"]
|
||||||
|
S_uni --> S_uni_Q["Queries<br/>* course - listCourses<br/>* staffCourse - listStaffCoursesByStaffId<br/>* staff - getStaffByUserId<br/>* level - listLevels<br/>* certificate - listCertificatesByStaffId"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L11["Trainings"]
|
||||||
|
S_trainings["trainings_screen.dart"]
|
||||||
|
S_trainings --> S_trainings_Q["Queries<br/>* course - listCourses<br/>* staffCourse - listStaffCoursesByStaffId"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L12["Leaderboard"]
|
||||||
|
S_leaderboard["leaderboard_screen.dart"]
|
||||||
|
S_leaderboard --> S_leaderboard_Q["Queries<br/>* staffCourse - missing"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L13["Bank Account"]
|
||||||
|
S_bank["bank_account_screen.dart"]
|
||||||
|
S_bank --> S_bank_Q["Queries<br/>* account - getAccountsByOwnerId"]
|
||||||
|
S_bank --> S_bank_M["Mutations<br/>* account - createAccount<br/>* account - updateAccount<br/>* account - deleteAccount"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L14["Earnings/Payments"]
|
||||||
|
S_payments["payments_screen.dart"]
|
||||||
|
S_payments --> S_payments_Q["Queries<br/>* recentPayment - getRecentPaymentsByPayedUserId"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L15["Timecard"]
|
||||||
|
S_timecard["time_card_screen.dart"]
|
||||||
|
S_timecard --> S_timecard_Q["Queries<br/>* timeSheet - getTimeSheetsByStaffId"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L16["Clock in"]
|
||||||
|
S_clockin["clock_in_screen.dart"]
|
||||||
|
S_clockin --> S_clockin_Q["Queries<br/>* application - getApplicationsByStaffId"]
|
||||||
|
S_clockin --> S_clockin_M["Mutations<br/>* application - createApplication<br/>* application - updateApplicationStatus"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L17["Shifts"]
|
||||||
|
S_shifts["shifts_screen.dart"]
|
||||||
|
S_shifts --> S_shifts_Q["Queries<br/>* application - getApplicationsByStaffId<br/>* shift - filterShifts<br/>* timeSheet - getTimeSheetsByStaffId"]
|
||||||
|
S_shifts --> S_shifts_M["Mutations<br/>* application - updateApplicationStatus<br/>* shift - CreateShift<br/>* application - createApplication<br/>* staffShift - createStaffShift"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L18["My availability"]
|
||||||
|
S_availability["availability_screen.dart"]
|
||||||
|
S_availability --> S_availability_Q["Queries<br/>* staffAvailability - getStaffAvailabilityByStaffId"]
|
||||||
|
S_availability --> S_availability_M["Mutations<br/>* staffAvailability - updateStaffAvailability<br/>* staffAvailability - createStaffAvailability<br/>* staffAvailability - deleteStaffAvailability"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L19["Your Benefits Overview"]
|
||||||
|
S_benefits["benefits_screen.dart"]
|
||||||
|
S_benefits --> S_benefits_Q["Queries<br/>* benefitsData - getBenefitsDataByStaffId"]
|
||||||
|
S_benefits --> S_benefits_M["Mutations<br/>* benefitsData - updateBenefitsData"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L20["Home"]
|
||||||
|
S_home["worker_home_screen.dart"]
|
||||||
|
S_home --> S_home_Q["Queries<br/>* application - getApplicationsByStaffId<br/>* shift - filterShifts<br/>* benefitsData - getBenefitsDataByStaffId"]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph L21["Shift detail"]
|
||||||
|
S_shift_detail["shift_details_screen.dart"]
|
||||||
|
S_shift_detail --> S_shift_detail_Q["Queries<br/>* application - getApplicationsByStaffId"]
|
||||||
|
S_shift_detail --> S_shift_detail_M["Mutations<br/>* application - updateApplicationStatus"]
|
||||||
|
end
|
||||||
@@ -85,7 +85,8 @@ Follow these steps to set up your development environment and gain access to all
|
|||||||
## 🔗 Useful Links
|
## 🔗 Useful Links
|
||||||
|
|
||||||
- **KROW Internal Launchpad:** [https://launchpad.krowwithus.com](https://launchpad.krowwithus.com)
|
- **KROW Internal Launchpad:** [https://launchpad.krowwithus.com](https://launchpad.krowwithus.com)
|
||||||
|
- **Project Onboarding (Start Here):** [docs/05-project-onboarding-master.md](./05-project-onboarding-master.md) - Comprehensive guide covering architecture, domain logic, feature gap analysis, and development strategy
|
||||||
- **Project Vision:** [docs/00-vision.md](./00-vision.md)
|
- **Project Vision:** [docs/00-vision.md](./00-vision.md)
|
||||||
- **Backend Specification:** [docs/01-backend-api-specification.md](./01-backend-api-specification.md)
|
- **Backend Specification (Legacy Reference):** [docs/01-backend-api-specification.md](./01-backend-api-specification.md) - Historical API spec from Digital Ocean stack
|
||||||
- **Codemagic Env Vars:** [docs/02-codemagic-env-vars.md](./02-codemagic-env-vars.md)
|
- **Codemagic Env Vars:** [docs/02-codemagic-env-vars.md](./02-codemagic-env-vars.md)
|
||||||
|
|
||||||
|
|||||||
1077
docs/05-project-onboarding-master.md
Normal file
1077
docs/05-project-onboarding-master.md
Normal file
File diff suppressed because it is too large
Load Diff
681
docs/06-feature-roadmap-tickets.md
Normal file
681
docs/06-feature-roadmap-tickets.md
Normal file
@@ -0,0 +1,681 @@
|
|||||||
|
# KROW Feature Roadmap & Tickets
|
||||||
|
|
||||||
|
> **Organization:** By priority (P0 → P1 → P2), then by domain
|
||||||
|
> **Source:** Analysis of prototypes in `internal/launchpad/prototypes-src/`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
subgraph P0["P0: MVP Core (Sprint 3-4)"]
|
||||||
|
A[Auth] --> B[Staff Onboarding]
|
||||||
|
B --> C[Events/Orders]
|
||||||
|
C --> D[Shifts/Assignment]
|
||||||
|
D --> E[Clock In/Out]
|
||||||
|
E --> F[Timesheets]
|
||||||
|
F --> G[Invoices]
|
||||||
|
G --> H[Earnings View]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph P1["P1: Enhanced (Sprint 5-6)"]
|
||||||
|
I[Smart Assignment]
|
||||||
|
J[Early Pay]
|
||||||
|
K[RAPID Orders]
|
||||||
|
L[Reports]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph P2["P2: Full Vision (Sprint 7+)"]
|
||||||
|
M[KROW University]
|
||||||
|
N[Gamification]
|
||||||
|
O[Advanced Analytics]
|
||||||
|
end
|
||||||
|
|
||||||
|
P0 --> P1 --> P2
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Progression by App
|
||||||
|
|
||||||
|
### At the end of P0 (MVP), each app allows:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
subgraph WEB["WEB (Admin/Client)"]
|
||||||
|
W1[Email/Password Login]
|
||||||
|
W2[Role-based Dashboard]
|
||||||
|
W3[Manage Staff]
|
||||||
|
W4[Create Events/Orders]
|
||||||
|
W5[Assign Staff to Shifts]
|
||||||
|
W6[Approve Timesheets]
|
||||||
|
W7[Generate Invoices]
|
||||||
|
W8[View Basic Reports]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph MC["MOBILE CLIENT"]
|
||||||
|
MC1[Email + Social Login]
|
||||||
|
MC2[Coverage Dashboard]
|
||||||
|
MC3[Create Orders]
|
||||||
|
MC4[View Active Shifts]
|
||||||
|
MC5[Manage Hubs]
|
||||||
|
MC6[View Billing]
|
||||||
|
MC7[Basic Reports]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph MS["MOBILE STAFF"]
|
||||||
|
MS1[Phone + SMS OTP Login]
|
||||||
|
MS2[Complete Onboarding]
|
||||||
|
MS3[View Available Shifts]
|
||||||
|
MS4[Accept/Decline Shifts]
|
||||||
|
MS5[Swipe Clock In/Out]
|
||||||
|
MS6[View Earnings]
|
||||||
|
MS7[I-9/W-4 Forms]
|
||||||
|
MS8[Bank Account Setup]
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# P0 - MUST HAVE (Sprint 3-4)
|
||||||
|
|
||||||
|
> **Goal:** End-to-end functional MVP
|
||||||
|
> **Total:** 52 tickets
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P0.1 - Authentication
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-AUTH-01 | Email/Password Login | Login form with email + password |
|
||||||
|
| P0-AUTH-02 | Password Reset | Send reset email, link, new password |
|
||||||
|
| P0-AUTH-03 | Role-Based Redirect | Admin → `/dashboard/admin`, Client → `/dashboard/client`, Vendor → `/dashboard/vendor` |
|
||||||
|
| P0-AUTH-04 | Session Persistence | Token persist, auto-refresh, logout |
|
||||||
|
|
||||||
|
### MOBILE CLIENT
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-AUTH-05 | Get Started Screen | Welcome screen with Sign In / Sign Up options |
|
||||||
|
| P0-AUTH-06 | Email/Password Login | Form with email + password |
|
||||||
|
| P0-AUTH-07 | Social Login (Apple/Google) | Apple and Google sign-in buttons |
|
||||||
|
| P0-AUTH-08 | Client Registration | Business signup form |
|
||||||
|
|
||||||
|
### MOBILE STAFF
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-AUTH-09 | Get Started Screen | Welcome screen "Work, Grow, Elevate" |
|
||||||
|
| P0-AUTH-10 | Phone Verification | US phone number input (+1) |
|
||||||
|
| P0-AUTH-11 | SMS OTP Code | Send and validate 6-digit code |
|
||||||
|
| P0-AUTH-12 | Login vs Signup Mode | Same flow, different destination |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P0.2 - Staff Management
|
||||||
|
|
||||||
|
### MOBILE STAFF - Onboarding
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-STAFF-01 | Profile Setup Wizard | Screen after phone verification |
|
||||||
|
| P0-STAFF-02 | Personal Info Screen | Name, date of birth, address |
|
||||||
|
| P0-STAFF-03 | Emergency Contact | Emergency contact (name, relationship, phone) |
|
||||||
|
| P0-STAFF-04 | Experience Screen | Skills/experience selection |
|
||||||
|
| P0-STAFF-05 | Attire Screen | Uniform/outfit photo |
|
||||||
|
| P0-STAFF-06 | Bank Account Setup | Banking info for payment |
|
||||||
|
|
||||||
|
### WEB - Admin Staff Management
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-STAFF-07 | Staff List | List with search, filters (status, skills) |
|
||||||
|
| P0-STAFF-08 | Staff Detail View | Full profile, documents, history |
|
||||||
|
| P0-STAFF-09 | Add Staff (Admin) | Staff creation form |
|
||||||
|
| P0-STAFF-10 | Edit Staff | Modify staff info |
|
||||||
|
| P0-STAFF-11 | Staff Approval Queue | Approve/Reject new staff |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P0.3 - Business & Hub Management
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-BIZ-01 | Client List | Business list with search/filter |
|
||||||
|
| P0-BIZ-02 | Add Client | Business creation form |
|
||||||
|
| P0-BIZ-03 | Edit Client | Modify business info |
|
||||||
|
| P0-BIZ-04 | Service Rates Config | Configure rates per position |
|
||||||
|
|
||||||
|
### MOBILE CLIENT
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-BIZ-05 | Client Hubs Screen | Location list and management |
|
||||||
|
| P0-BIZ-06 | Client Settings | Business account settings |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P0.4 - Event & Order Management
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-EVENT-01 | Order List (Admin) | All orders with filters |
|
||||||
|
| P0-EVENT-02 | Order List (Client) | Client's orders only |
|
||||||
|
| P0-EVENT-03 | Order List (Vendor) | Orders assigned to vendor |
|
||||||
|
| P0-EVENT-04 | Order Detail | Detailed view with shifts |
|
||||||
|
| P0-EVENT-05 | Edit Order | Modify event/shifts |
|
||||||
|
| P0-EVENT-06 | Schedule View | Event calendar |
|
||||||
|
|
||||||
|
### MOBILE CLIENT
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-EVENT-07 | Create Order Screen | Order type selection |
|
||||||
|
| P0-EVENT-08 | One-Time Order Flow | Wizard for one-time event creation |
|
||||||
|
| P0-EVENT-09 | Client Shifts Screen | Client's shifts list |
|
||||||
|
| P0-EVENT-10 | Client Coverage Screen | Staffing coverage view |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P0.5 - Shift & Assignment
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-SHIFT-01 | Staff Availability View | View staff availability |
|
||||||
|
| P0-SHIFT-02 | Manual Assignment | Assign staff to shift |
|
||||||
|
| P0-SHIFT-03 | Task Board | Task/assignment kanban |
|
||||||
|
|
||||||
|
### MOBILE STAFF
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-SHIFT-04 | Shifts Screen (Tabs) | Available / My Shifts / History |
|
||||||
|
| P0-SHIFT-05 | Shift Details Screen | Details with location, hours, pay |
|
||||||
|
| P0-SHIFT-06 | Accept/Decline Shift | Actions on proposed shift |
|
||||||
|
| P0-SHIFT-07 | Jobs Screen | Explore all available jobs |
|
||||||
|
| P0-SHIFT-08 | Availability Screen | Configure availability |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P0.6 - Time & Attendance
|
||||||
|
|
||||||
|
### MOBILE STAFF
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-TIME-01 | Clock In Screen | Main clock-in screen |
|
||||||
|
| P0-TIME-02 | Swipe to Clock In | Swipe gesture to confirm |
|
||||||
|
| P0-TIME-03 | Swipe to Clock Out | Swipe gesture to end |
|
||||||
|
| P0-TIME-04 | GPS Location Capture | Record position at clock |
|
||||||
|
| P0-TIME-05 | Time Card Screen | Clock history |
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-TIME-06 | Timesheet Approval | Timesheet approval queue |
|
||||||
|
|
||||||
|
### MOBILE CLIENT
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-TIME-07 | Client Timesheets | View timesheets for approval |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P0.7 - Financial
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-FIN-01 | Invoice List | Invoice list with status |
|
||||||
|
| P0-FIN-02 | Invoice Detail | Detailed invoice view |
|
||||||
|
| P0-FIN-03 | Invoice Editor | Create/modify invoice |
|
||||||
|
|
||||||
|
### MOBILE STAFF
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-FIN-04 | Payments Screen | Earnings dashboard |
|
||||||
|
| P0-FIN-05 | Earnings Screen | Earnings detail |
|
||||||
|
|
||||||
|
### MOBILE CLIENT
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-FIN-06 | Client Billing Screen | Client billing view |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P0.8 - Compliance & Documents
|
||||||
|
|
||||||
|
### MOBILE STAFF
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-COMP-01 | Tax Forms Screen | Tax forms list |
|
||||||
|
| P0-COMP-02 | Form I-9 | I-9 employment eligibility form |
|
||||||
|
| P0-COMP-03 | Form W-4 | W-4 tax withholding form |
|
||||||
|
| P0-COMP-04 | Documents Screen | Upload/view documents |
|
||||||
|
| P0-COMP-05 | Certificates Screen | Manage certifications |
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-COMP-06 | Compliance Dashboard | Compliance view for all staff |
|
||||||
|
| P0-COMP-07 | Document Vault | Document storage |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P0.9 - Dashboards & Navigation
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-DASH-01 | Admin Dashboard | Widgets: stats, alerts, actions |
|
||||||
|
| P0-DASH-02 | Client Dashboard | Widgets: coverage, orders, spend |
|
||||||
|
| P0-DASH-03 | Vendor Dashboard | Widgets: orders, staff, revenue |
|
||||||
|
|
||||||
|
### MOBILE CLIENT
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-DASH-04 | Client Home Screen | Mobile main dashboard |
|
||||||
|
| P0-DASH-05 | Bottom Navigation | Coverage, Billing, Home, Shifts, Reports |
|
||||||
|
|
||||||
|
### MOBILE STAFF
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P0-DASH-06 | Worker Home Screen | Staff main dashboard |
|
||||||
|
| P0-DASH-07 | Bottom Navigation | Shifts, Payments, Home, Clock-In, Profile |
|
||||||
|
| P0-DASH-08 | Worker Profile Screen | Settings and features menu |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Complete P0 Workflow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
sequenceDiagram
|
||||||
|
participant Staff as Mobile Staff
|
||||||
|
participant Client as Mobile Client
|
||||||
|
participant Admin as Web Admin
|
||||||
|
|
||||||
|
Note over Staff,Admin: 1. SETUP
|
||||||
|
Staff->>Staff: Phone + OTP Login
|
||||||
|
Staff->>Staff: Complete Onboarding
|
||||||
|
Staff->>Staff: Submit I-9, W-4
|
||||||
|
Admin->>Admin: Approve Staff
|
||||||
|
|
||||||
|
Note over Staff,Admin: 2. ORDER
|
||||||
|
Client->>Client: Email Login
|
||||||
|
Client->>Client: Create Order (One-Time)
|
||||||
|
Admin->>Admin: View Order
|
||||||
|
|
||||||
|
Note over Staff,Admin: 3. ASSIGNMENT
|
||||||
|
Admin->>Admin: Assign Staff to Shift
|
||||||
|
Staff->>Staff: View Shift Offer
|
||||||
|
Staff->>Staff: Accept Shift
|
||||||
|
|
||||||
|
Note over Staff,Admin: 4. WORK
|
||||||
|
Staff->>Staff: Swipe Clock In (GPS)
|
||||||
|
Staff->>Staff: Swipe Clock Out
|
||||||
|
|
||||||
|
Note over Staff,Admin: 5. PAYMENT
|
||||||
|
Client->>Client: Approve Timesheet
|
||||||
|
Admin->>Admin: Generate Invoice
|
||||||
|
Client->>Client: View Invoice
|
||||||
|
Staff->>Staff: View Earnings
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# P1 - SHOULD HAVE (Sprint 5-6)
|
||||||
|
|
||||||
|
> **Goal:** Differentiating features
|
||||||
|
> **Total:** 38 tickets
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P1.1 - Smart Features
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P1-SMART-01 | Smart Assignment Engine | Auto-match staff based on skills, availability, proximity |
|
||||||
|
| P1-SMART-02 | Conflict Detection | Detect double-booking |
|
||||||
|
| P1-SMART-03 | Overtime Calculator | OT/DT calculation with California rules |
|
||||||
|
| P1-SMART-04 | Savings Engine | Potential savings analysis |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P1.2 - Advanced Orders
|
||||||
|
|
||||||
|
### MOBILE CLIENT
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P1-ORDER-01 | RAPID Order Flow | Quick simplified order creation |
|
||||||
|
| P1-ORDER-02 | Recurring Order Flow | Recurring orders (weekly, monthly) |
|
||||||
|
| P1-ORDER-03 | Permanent Order Flow | Permanent placements |
|
||||||
|
| P1-ORDER-04 | Verify Worker Attire | Staff attire verification |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P1.3 - Early Pay
|
||||||
|
|
||||||
|
### MOBILE STAFF
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P1-PAY-01 | Early Pay Screen | Access earnings before payday |
|
||||||
|
| P1-PAY-02 | Early Pay Request | Request early payment (5% fee) |
|
||||||
|
| P1-PAY-03 | Instant Transfer | Transfer to bank account |
|
||||||
|
| P1-PAY-04 | Benefits Screen | Available benefits view |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P1.4 - Reports
|
||||||
|
|
||||||
|
### MOBILE CLIENT
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P1-REPORT-01 | Client Reports Screen | Reports hub |
|
||||||
|
| P1-REPORT-02 | Daily Ops Report | Daily operations report |
|
||||||
|
| P1-REPORT-03 | Spend Report | Spending analysis |
|
||||||
|
| P1-REPORT-04 | Forecast Report | Needs forecast |
|
||||||
|
| P1-REPORT-05 | Performance Report | Staff performance |
|
||||||
|
| P1-REPORT-06 | No-Show Report | Absence report |
|
||||||
|
| P1-REPORT-07 | Coverage Report | Coverage report |
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P1-REPORT-08 | Reports Dashboard | Admin reports center |
|
||||||
|
| P1-REPORT-09 | Activity Log | System activity log |
|
||||||
|
| P1-REPORT-10 | Vendor Performance | Vendor performance |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P1.5 - Communication
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P1-COMM-01 | Message Center | Internal messaging |
|
||||||
|
| P1-COMM-02 | Tutorial List | Training videos/guides |
|
||||||
|
| P1-COMM-03 | Support Center | Help center |
|
||||||
|
|
||||||
|
### MOBILE STAFF
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P1-COMM-04 | Messages Screen | Staff messaging |
|
||||||
|
| P1-COMM-05 | FAQs Screen | Frequently asked questions |
|
||||||
|
| P1-COMM-06 | Privacy Screen | Privacy settings |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P1.6 - Teams & Workers
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P1-TEAM-01 | Team List | Team list |
|
||||||
|
| P1-TEAM-02 | Create Team | Create team |
|
||||||
|
| P1-TEAM-03 | Team Detail | Team details |
|
||||||
|
| P1-TEAM-04 | Staff Onboarding Flow | Web onboarding wizard |
|
||||||
|
|
||||||
|
### MOBILE CLIENT
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P1-TEAM-05 | Client Workers Screen | View assigned staff |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P1.7 - Marketplace
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P1-MKT-01 | Vendor Marketplace | Discover vendors |
|
||||||
|
| P1-MKT-02 | Compare Rates | Compare rates |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P1 Added Workflow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
subgraph SMART["Smart Features"]
|
||||||
|
A[Client creates Order] --> B{Smart Engine}
|
||||||
|
B --> C[Auto-suggest Staff]
|
||||||
|
C --> D[Check Conflicts]
|
||||||
|
D --> E[Calculate OT Impact]
|
||||||
|
E --> F[Assign Optimal Staff]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph EARLYPAY["Early Pay"]
|
||||||
|
G[Staff completes Shift]
|
||||||
|
G --> H[Earnings Available]
|
||||||
|
H --> I[Request Early Pay]
|
||||||
|
I --> J[5% Fee Applied]
|
||||||
|
J --> K[Instant Bank Transfer]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph RAPID["RAPID Orders"]
|
||||||
|
L[Client opens RAPID]
|
||||||
|
L --> M[Quick Selection]
|
||||||
|
M --> N[Minimal Fields]
|
||||||
|
N --> O[Instant Submit]
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# P2 - NICE TO HAVE (Sprint 7+)
|
||||||
|
|
||||||
|
> **Goal:** Complete prototype vision
|
||||||
|
> **Total:** 28 tickets
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P2.1 - KROW University
|
||||||
|
|
||||||
|
### MOBILE STAFF
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P2-UNI-01 | KROW University Screen | Training hub |
|
||||||
|
| P2-UNI-02 | Trainings Screen | Available courses list |
|
||||||
|
| P2-UNI-03 | Course Enrollment | Enroll in a course |
|
||||||
|
| P2-UNI-04 | Video Lessons | Video playback |
|
||||||
|
| P2-UNI-05 | Quizzes | Knowledge tests |
|
||||||
|
| P2-UNI-06 | Certificates Earned | Earned badges/certs |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P2.2 - Gamification
|
||||||
|
|
||||||
|
### MOBILE STAFF
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P2-GAME-01 | Leaderboard Screen | Staff ranking |
|
||||||
|
| P2-GAME-02 | XP System | Experience points |
|
||||||
|
| P2-GAME-03 | Badges | Achievement badges |
|
||||||
|
| P2-GAME-04 | Level Progression | Level progression |
|
||||||
|
| P2-GAME-05 | Referral Program | Referral program |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P2.3 - Advanced Scheduling
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P2-SCHED-01 | Drag-Drop Scheduler | Drag-and-drop planning |
|
||||||
|
| P2-SCHED-02 | Automation Engine | Automation rules |
|
||||||
|
| P2-SCHED-03 | Double-Booking Override | Exception handling |
|
||||||
|
| P2-SCHED-04 | Cancellation Fee Modal | Cancellation fee management |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P2.4 - Advanced Finance
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P2-FIN-01 | Auto Invoice Generator | Auto invoice generation |
|
||||||
|
| P2-FIN-02 | Invoice Export Panel | Multi-format export |
|
||||||
|
| P2-FIN-03 | Invoice Quick Actions | Quick actions |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P2.5 - Advanced Analytics
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P2-ANAL-01 | Staffing Cost Report | Staffing cost analysis |
|
||||||
|
| P2-ANAL-02 | Staff Performance Report | Individual performance |
|
||||||
|
| P2-ANAL-03 | Operational Efficiency | Operational efficiency |
|
||||||
|
| P2-ANAL-04 | Report Template Library | Template library |
|
||||||
|
| P2-ANAL-05 | Scheduled Reports | Scheduled reports |
|
||||||
|
| P2-ANAL-06 | Report PDF Preview | PDF preview |
|
||||||
|
| P2-ANAL-07 | Report Insights Banner | Automatic insights |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## P2.6 - Advanced Client Features
|
||||||
|
|
||||||
|
### WEB
|
||||||
|
|
||||||
|
| ID | Ticket | Description |
|
||||||
|
|----|--------|-------------|
|
||||||
|
| P2-CLI-01 | Client Loyalty Card | Loyalty program |
|
||||||
|
| P2-CLI-02 | Client Vendor Preferences | Vendor preferences |
|
||||||
|
| P2-CLI-03 | Dashboard Customizer | Dashboard customization |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Complete P2 Workflow
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
subgraph UNI["KROW University"]
|
||||||
|
U1[Staff opens University] --> U2[Browse Courses]
|
||||||
|
U2 --> U3[Enroll in Course]
|
||||||
|
U3 --> U4[Watch Videos]
|
||||||
|
U4 --> U5[Pass Quiz]
|
||||||
|
U5 --> U6[Earn Certificate]
|
||||||
|
U6 --> U7[+XP Points]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph GAME["Gamification"]
|
||||||
|
G1[Complete Shifts] --> G2[Earn XP]
|
||||||
|
G2 --> G3[Level Up]
|
||||||
|
G3 --> G4[Unlock Badges]
|
||||||
|
G4 --> G5[Climb Leaderboard]
|
||||||
|
G5 --> G6[Better Shift Priority]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph AUTO["Advanced Automation"]
|
||||||
|
A1[New Order Created]
|
||||||
|
A1 --> A2[Automation Rules Check]
|
||||||
|
A2 --> A3[Auto-Assign Preferred Staff]
|
||||||
|
A3 --> A4[Auto-Generate Invoice]
|
||||||
|
A4 --> A5[Auto-Send Reports]
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Completion Checklist
|
||||||
|
|
||||||
|
## When P0 is done:
|
||||||
|
|
||||||
|
- [ ] **Auth works** for all 3 apps (phone OTP for staff, email for client/web)
|
||||||
|
- [ ] **Staff can fully onboard** via mobile
|
||||||
|
- [ ] **Client can create** one-time orders
|
||||||
|
- [ ] **Admin can assign** staff to shifts
|
||||||
|
- [ ] **Staff can clock in/out** with swipe + GPS
|
||||||
|
- [ ] **Timesheets are approved** by client
|
||||||
|
- [ ] **Invoices are generated** and visible
|
||||||
|
- [ ] **Staff can view earnings**
|
||||||
|
- [ ] **I-9/W-4 forms** work
|
||||||
|
|
||||||
|
**= MVP ACHIEVED**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## When P1 is done:
|
||||||
|
|
||||||
|
- [ ] **Smart Assignment** automatically suggests best staff
|
||||||
|
- [ ] **Conflict detection** prevents double-bookings
|
||||||
|
- [ ] **Early Pay** allows staff to access earnings
|
||||||
|
- [ ] **RAPID orders** speeds up creation
|
||||||
|
- [ ] **Recurring orders** handles repetitive needs
|
||||||
|
- [ ] **Full reports** give clients visibility
|
||||||
|
- [ ] **Messaging** enables direct communication
|
||||||
|
|
||||||
|
**= ENHANCED MVP**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## When P2 is done:
|
||||||
|
|
||||||
|
- [ ] **KROW University** trains staff
|
||||||
|
- [ ] **Gamification** motivates via XP and leaderboard
|
||||||
|
- [ ] **Advanced scheduling** optimizes planning
|
||||||
|
- [ ] **Auto-invoicing** reduces manual work
|
||||||
|
- [ ] **Advanced analytics** provide business insights
|
||||||
|
|
||||||
|
**= FULL PROTOTYPE VISION ACHIEVED**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Summary
|
||||||
|
|
||||||
|
| Priority | Sprints | Tickets |
|
||||||
|
|----------|---------|---------|
|
||||||
|
| **P0** | 3-4 | **52** |
|
||||||
|
| **P1** | 5-6 | **38** |
|
||||||
|
| **P2** | 7+ | **28** |
|
||||||
|
| **TOTAL** | - | **118** |
|
||||||
|
|
||||||
|
### By App
|
||||||
|
|
||||||
|
| App | P0 | P1 | P2 | Total |
|
||||||
|
|-----|----|----|-----|-------|
|
||||||
|
| Web | 22 | 16 | 14 | 52 |
|
||||||
|
| Mobile Client | 12 | 12 | 3 | 27 |
|
||||||
|
| Mobile Staff | 18 | 10 | 11 | 39 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Document Created:** January 2026
|
||||||
|
**Source:** Analysis of `internal/launchpad/prototypes-src/`
|
||||||
1333
docs/07-feature-roadmap-tickets-details.md
Normal file
1333
docs/07-feature-roadmap-tickets-details.md
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,9 @@
|
|||||||
[
|
[
|
||||||
"1b2e22bdec8f6493bf71ee535b6db6b4b5cd2d373f0ffb25524e229f3b5b7f5f",
|
"1b2e22bdec8f6493bf71ee535b6db6b4b5cd2d373f0ffb25524e229f3b5b7f5f",
|
||||||
"e075ff357ef35be2d55b0e383d59c5256980c492ada7ab84c84b2bb5ac26a73f",
|
"e075ff357ef35be2d55b0e383d59c5256980c492ada7ab84c84b2bb5ac26a73f",
|
||||||
"994b31c1aef3d59fe59bc3b8e1dec860a6fb3c73cbf41bdf45028e2c1ecbcf7a"
|
"8205f6c72d8e97358fe7638b02503c17b4bfd4a397c143ea27151f3f106720d4",
|
||||||
|
"994b31c1aef3d59fe59bc3b8e1dec860a6fb3c73cbf41bdf45028e2c1ecbcf7a",
|
||||||
|
"69d44565e675b319114ac2fa7f9708d102a37a75ab3d7628b305c37d185dd2ed",
|
||||||
|
"99144d7e873dd0ab56c185d5f42fee2048b1be73513cf36dc1df3eae1e524489",
|
||||||
|
"088aa009feb3ac78d37242c9abc339aacf42665dccdb626415590148855d0623"
|
||||||
]
|
]
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
"textHoverClass": "group-hover:text-blue-700"
|
"textHoverClass": "group-hover:text-blue-700"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Mobile Staff MVP",
|
"title": "Mobile Worker MVP",
|
||||||
"url": "/prototypes/mobile/staff/index.html",
|
"url": "/prototypes/mobile/staff/index.html",
|
||||||
"badge": "Concept",
|
"badge": "Concept",
|
||||||
"badgeColorClass": "bg-green-500",
|
"badgeColorClass": "bg-green-500",
|
||||||
|
|||||||
@@ -42,10 +42,22 @@
|
|||||||
"icon": "bi-geo-alt"
|
"icon": "bi-geo-alt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "assets/diagrams/roadmap/roadmap.mermaid",
|
"path": "assets/diagrams/roadmap/0-roadmap-overview.mermaid",
|
||||||
"title": "Project Roadmap",
|
"title": "Roadmap Overview",
|
||||||
"type": "mermaid",
|
"type": "mermaid",
|
||||||
"icon": "bi-calendar-check"
|
"icon": "bi-geo-alt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "assets/diagrams/roadmap/1-roadmap-p0-mvp.mermaid",
|
||||||
|
"title": "Roadmap P0 MVP",
|
||||||
|
"type": "mermaid",
|
||||||
|
"icon": "bi-geo-alt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "assets/diagrams/roadmap/2-roadmap-p0-complete.mermaid",
|
||||||
|
"title": "Roadmap P0 Complete Workflow",
|
||||||
|
"type": "mermaid",
|
||||||
|
"icon": "bi-geo-alt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "assets/diagrams/legacy/staff-mobile-application/overview.mermaid",
|
"path": "assets/diagrams/legacy/staff-mobile-application/overview.mermaid",
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
flowchart LR
|
||||||
|
subgraph P0["P0: MVP Core (Sprint 3-4)"]
|
||||||
|
A[Auth] --> B[Staff Onboarding]
|
||||||
|
B --> C[Events/Orders]
|
||||||
|
C --> D[Shifts/Assignment]
|
||||||
|
D --> E[Clock In/Out]
|
||||||
|
E --> F[Timesheets]
|
||||||
|
F --> G[Invoices]
|
||||||
|
G --> H[Earnings View]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph P1["P1: Enhanced (Sprint 5-6)"]
|
||||||
|
I[Smart Assignment]
|
||||||
|
J[Early Pay]
|
||||||
|
K[RAPID Orders]
|
||||||
|
L[Reports]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph P2["P2: Full Vision (Sprint 7+)"]
|
||||||
|
M[KROW University]
|
||||||
|
N[Gamification]
|
||||||
|
O[Advanced Analytics]
|
||||||
|
end
|
||||||
|
|
||||||
|
P0 --> P1 --> P2
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
flowchart TB
|
||||||
|
subgraph WEB["WEB (Admin/Client)"]
|
||||||
|
W1[Email/Password Login]
|
||||||
|
W2[Role-based Dashboard]
|
||||||
|
W3[Manage Staff]
|
||||||
|
W4[Create Events/Orders]
|
||||||
|
W5[Assign Staff to Shifts]
|
||||||
|
W6[Approve Timesheets]
|
||||||
|
W7[Generate Invoices]
|
||||||
|
W8[View Basic Reports]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph MC["MOBILE CLIENT"]
|
||||||
|
MC1[Email + Social Login]
|
||||||
|
MC2[Coverage Dashboard]
|
||||||
|
MC3[Create Orders]
|
||||||
|
MC4[View Active Shifts]
|
||||||
|
MC5[Manage Hubs]
|
||||||
|
MC6[View Billing]
|
||||||
|
MC7[Basic Reports]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph MS["MOBILE STAFF"]
|
||||||
|
MS1[Phone + SMS OTP Login]
|
||||||
|
MS2[Complete Onboarding]
|
||||||
|
MS3[View Available Shifts]
|
||||||
|
MS4[Accept/Decline Shifts]
|
||||||
|
MS5[Swipe Clock In/Out]
|
||||||
|
MS6[View Earnings]
|
||||||
|
MS7[I-9/W-4 Forms]
|
||||||
|
MS8[Bank Account Setup]
|
||||||
|
end
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
sequenceDiagram
|
||||||
|
participant Staff as Mobile Staff
|
||||||
|
participant Client as Mobile Client
|
||||||
|
participant Admin as Web Admin
|
||||||
|
|
||||||
|
Note over Staff,Admin: 1. SETUP
|
||||||
|
Staff->>Staff: Phone + OTP Login
|
||||||
|
Staff->>Staff: Complete Onboarding
|
||||||
|
Staff->>Staff: Submit I-9, W-4
|
||||||
|
Admin->>Admin: Approve Staff
|
||||||
|
|
||||||
|
Note over Staff,Admin: 2. ORDER
|
||||||
|
Client->>Client: Email Login
|
||||||
|
Client->>Client: Create Order (One-Time)
|
||||||
|
Admin->>Admin: View Order
|
||||||
|
|
||||||
|
Note over Staff,Admin: 3. ASSIGNMENT
|
||||||
|
Admin->>Admin: Assign Staff to Shift
|
||||||
|
Staff->>Staff: View Shift Offer
|
||||||
|
Staff->>Staff: Accept Shift
|
||||||
|
|
||||||
|
Note over Staff,Admin: 4. WORK
|
||||||
|
Staff->>Staff: Swipe Clock In (GPS)
|
||||||
|
Staff->>Staff: Swipe Clock Out
|
||||||
|
|
||||||
|
Note over Staff,Admin: 5. PAYMENT
|
||||||
|
Client->>Client: Approve Timesheet
|
||||||
|
Admin->>Admin: Generate Invoice
|
||||||
|
Client->>Client: View Invoice
|
||||||
|
Staff->>Staff: View Earnings
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
timeline
|
|
||||||
title KROW Platform - Accelerated Migration & Enhancement Roadmap (2 Months to Production)
|
|
||||||
|
|
||||||
section Phase 1: Foundation & New Workflow Adoption
|
|
||||||
Week 1-2 : Initialize Firebase projects (Dev, Staging) and configure hosting<br>Set up CI/CD pipelines for automated deployments<br>Adopt new development and deployment workflows
|
|
||||||
Week 3-4 : Configure internal launchpad for easy access to resources<br>Team training on new tools and workflows<br>Documentation setup
|
|
||||||
Key Milestones : <b>Dev & Staging environments fully operational</b><br><b>Team ready to work with new infrastructure</b>
|
|
||||||
|
|
||||||
section Phase 2: Functional Parity & New Experience
|
|
||||||
Week 5-6 : Migrate core backend logic (Cloud Functions, Firestore/Cloud SQL)<br>Reconnect Web and Mobile apps to new APIs<br>Database migration and validation
|
|
||||||
Week 7-8 : Integrate new UI/UX design across all applications<br>Implement new core business workflows<br>Feature parity testing
|
|
||||||
Key Milestones : <b>All existing features are ISO-functional on the new platform</b><br><b>New design and core workflows fully integrated and tested</b>
|
|
||||||
|
|
||||||
section Phase 3: Preparation & Production Launch
|
|
||||||
Week 9-10 : Complete end-to-end testing and performance optimization<br>Security audits and penetration testing<br>Load testing and optimization
|
|
||||||
Week 11-12 : Set up robust monitoring and alerting system for production<br>Final production deployment<br>Legacy infrastructure decommissioning plan
|
|
||||||
Key Milestones : <b>KROW is live in production with new design and workflows</b><br><b>Legacy infrastructure ready for decommissioning</b>
|
|
||||||
@@ -8,7 +8,13 @@ user:admin@krowwithus.com
|
|||||||
|
|
||||||
# External users - Oloodi employees
|
# External users - Oloodi employees
|
||||||
user:boris@oloodi.com
|
user:boris@oloodi.com
|
||||||
|
user:jose.salazar@oloodi.com
|
||||||
user:achintha.isuru@oloodi.com
|
user:achintha.isuru@oloodi.com
|
||||||
|
|
||||||
# External users - Legendary employees
|
|
||||||
|
|
||||||
|
# External users - Legendary employees
|
||||||
|
user:iortega@legendaryeventstaff.com
|
||||||
|
|
||||||
|
# External users - gmail.com
|
||||||
|
user:fazulilahi@gmail.com
|
||||||
|
user:zouantchaw74@gmail.com
|
||||||
@@ -14,6 +14,11 @@ MOBILE_STAFF_SOURCE="$POC_REPO_PATH/prototypes/mobile/staff/staff_mobile_applica
|
|||||||
MOBILE_STAFF_DEST="internal/launchpad/prototypes/mobile/staff"
|
MOBILE_STAFF_DEST="internal/launchpad/prototypes/mobile/staff"
|
||||||
MOBILE_STAFF_HREF="/prototypes/mobile/staff/"
|
MOBILE_STAFF_HREF="/prototypes/mobile/staff/"
|
||||||
|
|
||||||
|
# Source code destinations (for AI/Claude context)
|
||||||
|
WEB_SRC_DEST="internal/launchpad/prototypes-src/web"
|
||||||
|
MOBILE_CLIENT_SRC_DEST="internal/launchpad/prototypes-src/mobile/client"
|
||||||
|
MOBILE_STAFF_SRC_DEST="internal/launchpad/prototypes-src/mobile/staff"
|
||||||
|
|
||||||
# Colors
|
# Colors
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
BLUE='\033[0;34m'
|
BLUE='\033[0;34m'
|
||||||
@@ -77,6 +82,16 @@ if [ -d "$WEB_POC_SOURCE" ]; then
|
|||||||
cp -R "$WEB_POC_SOURCE/dist/"* "$WEB_DEST/"
|
cp -R "$WEB_POC_SOURCE/dist/"* "$WEB_DEST/"
|
||||||
|
|
||||||
echo -e "${GREEN}✅ Web Dashboard synced successfully.${NC}"
|
echo -e "${GREEN}✅ Web Dashboard synced successfully.${NC}"
|
||||||
|
|
||||||
|
# Copy source code for AI context
|
||||||
|
echo " -> Copying source code for AI context..."
|
||||||
|
rm -rf "$WEB_SRC_DEST"
|
||||||
|
mkdir -p "$WEB_SRC_DEST"
|
||||||
|
cp -R "$WEB_POC_SOURCE/src" "$WEB_SRC_DEST/"
|
||||||
|
[ -f "$WEB_POC_SOURCE/package.json" ] && cp "$WEB_POC_SOURCE/package.json" "$WEB_SRC_DEST/"
|
||||||
|
[ -f "$WEB_POC_SOURCE/tsconfig.json" ] && cp "$WEB_POC_SOURCE/tsconfig.json" "$WEB_SRC_DEST/"
|
||||||
|
[ -f "$WEB_POC_SOURCE/vite.config.ts" ] && cp "$WEB_POC_SOURCE/vite.config.ts" "$WEB_SRC_DEST/"
|
||||||
|
echo -e "${GREEN}✅ Web source code copied.${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${RED}⚠️ Warning: Web POC source directory not found at $WEB_POC_SOURCE${NC}"
|
echo -e "${RED}⚠️ Warning: Web POC source directory not found at $WEB_POC_SOURCE${NC}"
|
||||||
fi
|
fi
|
||||||
@@ -123,6 +138,14 @@ if [ -d "$MOBILE_CLIENT_SOURCE" ]; then
|
|||||||
cp -R "$MOBILE_CLIENT_SOURCE/build/web/"* "$MOBILE_CLIENT_DEST/"
|
cp -R "$MOBILE_CLIENT_SOURCE/build/web/"* "$MOBILE_CLIENT_DEST/"
|
||||||
|
|
||||||
echo -e "${GREEN}✅ Mobile Client synced successfully.${NC}"
|
echo -e "${GREEN}✅ Mobile Client synced successfully.${NC}"
|
||||||
|
|
||||||
|
# Copy source code for AI context
|
||||||
|
echo " -> Copying source code for AI context..."
|
||||||
|
rm -rf "$MOBILE_CLIENT_SRC_DEST"
|
||||||
|
mkdir -p "$MOBILE_CLIENT_SRC_DEST"
|
||||||
|
cp -R "$MOBILE_CLIENT_SOURCE/lib" "$MOBILE_CLIENT_SRC_DEST/"
|
||||||
|
[ -f "$MOBILE_CLIENT_SOURCE/pubspec.yaml" ] && cp "$MOBILE_CLIENT_SOURCE/pubspec.yaml" "$MOBILE_CLIENT_SRC_DEST/"
|
||||||
|
echo -e "${GREEN}✅ Mobile Client source code copied.${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${RED}⚠️ Warning: Mobile Client source not found at $MOBILE_CLIENT_SOURCE${NC}"
|
echo -e "${RED}⚠️ Warning: Mobile Client source not found at $MOBILE_CLIENT_SOURCE${NC}"
|
||||||
fi
|
fi
|
||||||
@@ -146,6 +169,14 @@ if [ -d "$MOBILE_STAFF_SOURCE" ]; then
|
|||||||
cp -R "$MOBILE_STAFF_SOURCE/build/web/"* "$MOBILE_STAFF_DEST/"
|
cp -R "$MOBILE_STAFF_SOURCE/build/web/"* "$MOBILE_STAFF_DEST/"
|
||||||
|
|
||||||
echo -e "${GREEN}✅ Mobile Staff synced successfully.${NC}"
|
echo -e "${GREEN}✅ Mobile Staff synced successfully.${NC}"
|
||||||
|
|
||||||
|
# Copy source code for AI context
|
||||||
|
echo " -> Copying source code for AI context..."
|
||||||
|
rm -rf "$MOBILE_STAFF_SRC_DEST"
|
||||||
|
mkdir -p "$MOBILE_STAFF_SRC_DEST"
|
||||||
|
cp -R "$MOBILE_STAFF_SOURCE/lib" "$MOBILE_STAFF_SRC_DEST/"
|
||||||
|
[ -f "$MOBILE_STAFF_SOURCE/pubspec.yaml" ] && cp "$MOBILE_STAFF_SOURCE/pubspec.yaml" "$MOBILE_STAFF_SRC_DEST/"
|
||||||
|
echo -e "${GREEN}✅ Mobile Staff source code copied.${NC}"
|
||||||
else
|
else
|
||||||
echo -e "${RED}⚠️ Warning: Mobile Staff source not found at $MOBILE_STAFF_SOURCE${NC}"
|
echo -e "${RED}⚠️ Warning: Mobile Staff source not found at $MOBILE_STAFF_SOURCE${NC}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user