@startuml
@startuml
left to right direction
skinparam packageStyle rectangle
skinparam backgroundColor white
actor "Unregistered User\n(Guest)" as Guest
actor "Registered User" as RegUser
actor "Admin" as Admin
rectangle "Local History Story Map" {
' =========================
' Guest / Common Discovery
' =========================
usecase "View Stories\non Map" as UC1
usecase "View Stories\nin Feed" as UC2
usecase "View Stories\non Timeline" as UC3
usecase "Search Stories" as UC4
usecase "Filter Stories" as UC5
usecase "Open & Read\nFull Story" as UC6
usecase "View Story\nMetadata" as UC7
usecase "View/Play\nMultimedia Content" as UC8
usecase "View Public\nProfile" as UC9
usecase "View Stories\nby Tag" as UC10
usecase "Register /\nCreate Account" as UC11
usecase "Add Story Metedata" as UC42
usecase "Change Story Metedata" as UC43
' =========================
' Authentication & Profile
' =========================
usecase "Login" as UC12
usecase "Logout" as UC13
usecase "Verify Email\nvia Code" as UC14
usecase "Reset Password" as UC15
usecase "Change Password" as UC16
usecase "Manage Profile\n& Privacy Settings" as UC17
usecase "Delete Account" as UC18
usecase "View Saved Stories" as UC19
usecase "Authenticate\nUser" as UC44
' =========================
' Story Contribution
' =========================
usecase "Submit Story" as UC20
usecase "Edit Own Story" as UC21
usecase "Upload / Manage\nStory Media" as UC22
usecase "Add / Manage\nStory Tags" as UC23
' =========================
' Interaction
' =========================
usecase "Like Story" as UC24
usecase "Remove Like" as UC25
usecase "Comment on Story" as UC26
usecase "Remove Own Comment" as UC27
usecase "Save Story" as UC28
usecase "Remove Saved Story" as UC29
usecase "Report Story" as UC30
usecase "Report Comment" as UC31
' =========================
' Notifications & Rewards
' =========================
usecase "View Notifications" as UC32
usecase "Manage Notification\nPreferences" as UC33
usecase "View Points &\nEarned Badges" as UC34
' =========================
' Admin / Moderation
' =========================
usecase "Review Reports" as UC35
usecase "Resolve Reports" as UC36
usecase "Remove Story" as UC37
usecase "Remove Comment" as UC38
usecase "Review / Remove\nInappropriate Tags" as UC39
usecase "Ban User" as UC40
usecase "Manage Moderation\nRules" as UC41
' =========================
' Include / Extend Relations
' =========================
' Story page details
UC6 ..> UC7 : <<include>>
UC6 ..> UC8 : <<include>>
' Search/filter can affect all discovery views
UC4 ..> UC1 : <<extend>>
UC5 ..> UC1 : <<extend>>
UC4 ..> UC2 : <<extend>>
UC5 ..> UC2 : <<extend>>
UC4 ..> UC3 : <<extend>>
UC5 ..> UC3 : <<extend>>
UC10 ..> UC2 : <<extend>>
' Registration/authentication flows
UC11 ..> UC14 : <<include>>
UC12 ..> UC44 : <<include>>
' Story submission details
UC20 <.. UC22 : <<extend>>
UC20 <.. UC23 : <<extend>>
UC21 <.. UC22 : <<extend>>
UC21 <.. UC23 : <<extend>>
UC20 ..> UC42 : <<include>>
UC21 <.. UC43 : <<extend>>
' Moderation flow
UC35 <.. UC36 : <<extend>>
UC36 <.. UC37 : <<extend>>
UC36 <.. UC38 : <<extend>>
UC36 <.. UC40 : <<extend>>
UC36 <.. UC39 : <<extend>>
}
' =========================
' Guest associations
' =========================
Guest --> UC1
Guest --> UC2
Guest --> UC3
Guest --> UC4
Guest --> UC5
Guest --> UC6
Guest --> UC9
Guest --> UC10
Guest --> UC11
' =========================
' Registered User inherits Guest
' =========================
RegUser --|> Guest
RegUser --> UC12
RegUser --> UC13
RegUser --> UC15
RegUser --> UC16
RegUser --> UC17
RegUser --> UC18
RegUser --> UC19
RegUser --> UC20
RegUser --> UC21
RegUser --> UC24
RegUser --> UC25
RegUser --> UC26
RegUser --> UC27
RegUser --> UC28
RegUser --> UC29
RegUser --> UC30
RegUser --> UC31
RegUser --> UC32
RegUser --> UC33
RegUser --> UC34
' =========================
' Admin associations
' =========================
Admin --> UC35
Admin --> UC36
Admin --> UC37
Admin --> UC38
Admin --> UC40
Admin --> UC41
Admin --> UC39
@enduml
'''