Skip to content

Instantly share code, notes, and snippets.

@khanhkhoktvn
Created June 8, 2025 14:08
Show Gist options
  • Select an option

  • Save khanhkhoktvn/55d3ccf2bc6b3b24c88308f7803a887c to your computer and use it in GitHub Desktop.

Select an option

Save khanhkhoktvn/55d3ccf2bc6b3b24c88308f7803a887c to your computer and use it in GitHub Desktop.
@startuml
'========================================================================
' Online Food Ordering — Complete Screen Flow (57 Screens)
'========================================================================
' Use crisp right-angle connectors
skinparam linetype ortho
' Add generous padding so nothing gets clipped
skinparam padding 20
' Box styling
skinparam rectangle {
RoundCorner 5
Shadowing false
BorderColor Black
BackgroundColor White
}
title Online Food Ordering — Complete Screen Flow
'=======================================================================
' 1. Authentication (UC01–UC10)
'=======================================================================
package "Authentication" as AuthPkg {
rectangle "UC01: Register Account" as UC01
rectangle "UC02: Login to System" as UC02
rectangle "UC03: Login with Google" as UC03
rectangle "UC04: Login with Username/Password" as UC04
rectangle "UC05: Forgot Password" as UC05
rectangle "UC06: Enter Email for OTP" as UC06
rectangle "UC08: Verify OTP" as UC08
rectangle "UC09: Enter New Password" as UC09
rectangle "UC10: Change Password" as UC10
}
//=======================================================================
// 2. User Profile Management (UC25–UC29)
//=======================================================================
package "User Profile Management" as ProfilePkg {
rectangle "UC25: Change Avatar" as UC25
rectangle "UC26: Change Username" as UC26
rectangle "UC27: View Order History" as UC27
rectangle "UC28: Add to Favorites" as UC28
rectangle "UC29: Remove from Favorites" as UC29
}
//=======================================================================
// 3. Food Browsing (UC17–UC20, UC22, UC24)
//=======================================================================
package "Food Browsing" as BrowsePkg {
rectangle "UC17: View Food List" as UC17
rectangle "UC18: Enter Search Keyword" as UC18
rectangle "UC19: Display Search Results" as UC19
rectangle "UC20: Select Category" as UC20
rectangle "UC22: View Food Details" as UC22
rectangle "UC24: View Current Promotions"as UC24
}
//=======================================================================
// 4. Ordering Process (UC30–UC34, UC42–UC44)
//=======================================================================
package "Ordering Process" as OrderPkg {
rectangle "UC30: Select Food & Add to Cart" as UC30
rectangle "UC31: View Cart" as UC31
rectangle "UC32: Apply Discount Code" as UC32
rectangle "UC33: Apply Loyalty Points" as UC33
rectangle "UC34: Confirm Order" as UC34
rectangle "UC42: Select Delivery Time" as UC42
rectangle "UC43: Pay with Cash" as UC43
rectangle "UC44: Pay via VNPay" as UC44
}
//=======================================================================
// 5. Table Reservation (UC35–UC37, UC40)
//=======================================================================
package "Table Reservation" as TablePkg {
rectangle "UC35: Select Service Time" as UC35
rectangle "UC36: Select Table" as UC36
rectangle "UC37: View Available Tables" as UC37
rectangle "UC40: Confirm Reservation" as UC40
}
//=======================================================================
// 6. Order Tracking & Management (UC45–UC48)
//=======================================================================
package "Order Tracking & Mgmt." as TrackPkg {
rectangle "UC45: Track Order Status" as UC45
rectangle "UC46: Request Order Cancellation" as UC46
rectangle "UC47: Rate Food" as UC47
rectangle "UC48: Leave Feedback" as UC48
}
//=======================================================================
// 7. Delivery Management (UC53–UC58)
//=======================================================================
package "Delivery Management" as DeliveryPkg {
rectangle "UC53: View Prepared Orders" as UC53
rectangle "UC54: Accept Order" as UC54
rectangle "UC55: View Received/Delivered" as UC55
rectangle "UC56: View Order Details" as UC56
rectangle "UC57: Mark Delivered" as UC57
rectangle "UC58: Mark Delivery Failed" as UC58
}
//=======================================================================
// 8. Kitchen Management (UC59–UC60)
//=======================================================================
package "Kitchen Management" as KitchenPkg {
rectangle "UC59: View Preparing Orders" as UC59
rectangle "UC60: Mark as Prepared" as UC60
}
//=======================================================================
// 9. Admin Management (UC61–UC102)
//=======================================================================
package "Admin Management" as AdminPkg {
rectangle "UC61: View User & Shipper Accounts" as UC61
rectangle "UC62: Create Shipper Account" as UC62
rectangle "UC63: Create Kitchen Manager Account" as UC63
rectangle "UC64: Lock User Account" as UC64
rectangle "UC65: Unlock User Account" as UC65
rectangle "UC66: Add Food Item" as UC66
rectangle "UC67: Edit Food Item" as UC67
rectangle "UC68: Delete Food Item" as UC68
rectangle "UC69: Add Food Category" as UC69
rectangle "UC70: Edit Food Category" as UC70
rectangle "UC71: Delete Food Category" as UC71
rectangle "UC72: View Orders List" as UC72
rectangle "UC73: Approve Order" as UC73
rectangle "UC74: Edit Order" as UC74
rectangle "UC75: Review Cancellation Request" as UC75
rectangle "UC76: Change to Preparing" as UC76
rectangle "UC77: Change to Delivering" as UC77
rectangle "UC78: Change to Cancelled" as UC78
rectangle "UC79: View Shipper List" as UC79
rectangle "UC80: Assign Order to Shipper" as UC80
rectangle "UC81: View Table Plan" as UC81
rectangle "UC82: Block Table" as UC82
rectangle "UC83: Approve Reservation" as UC83
rectangle "UC84: Modify Reservation" as UC84
rectangle "UC85: Cancel Reservation" as UC85
rectangle "UC86: Generate QR Code" as UC86
rectangle "UC87: Create Discount Code" as UC87
rectangle "UC88: Edit Discount Code" as UC88
rectangle "UC89: Delete Discount Code" as UC89
rectangle "UC90: View Discount Usage" as UC90
rectangle "UC91: View Expired Discounts" as UC91
rectangle "UC92: Configure Points Conversion" as UC92
rectangle "UC93: (skip/unused)" as UC93
rectangle "UC94: Configure Redemption Values" as UC94
rectangle "UC95: View Food Reviews" as UC95
rectangle "UC96: Respond to Reviews" as UC96
rectangle "UC97: Delete Comment" as UC97
rectangle "UC98: Sales Report" as UC98
rectangle "UC99: User Activity Report" as UC99
rectangle "UC100: Inventory Report" as UC100
rectangle "UC101: Revenue Report" as UC101
rectangle "UC102: Cancelled Orders Report" as UC102
}
'=======================================================================
' Key inter-module transitions
' (adjust these if you need per‐screen rather than package‐level flows)
'=======================================================================
UC10 --> UC17 // After changing password, user can start browsing
UC22 --> UC30 // From Food Details to Add-to-Cart
UC40 --> UC30 // From Reservation to Ordering
UC27 --> UC30 // From Order History “Reorder” to Ordering
UC34 --> UC45 // After Confirm Order → Track Order
UC46 --> UC53 // Cancel Request → Shipper View
UC57 --> UC59 // Delivery completed → Kitchen sees new preparing jobs
AdminPkg --> UC01 // Admin can jump into Authentication (and thus all)
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment