@startuml skin rose skinparam backgroundColor #EEEBDC left to right direction !define Cloud(name, description) usecase "description" as name [[name]] #DarkGray !define Kite(name, description) usecase "description" as name [[name]] #Yellow !define Sea(name, description) usecase "description" as name [[name]] #LightBlue !define Fish(name, description) usecase "description" as name [[name]] #LightGray !define Clam(name, description) usecase "description" as name [[name]] #Silver hide <> stereotype /' package "TaskHub" <> { '/ package "TaskHub" { actor User as user actor Guest as guest actor Admin as admin ' Auth package "Auth" { actor "Google Auth Provider" as google /' Cloud(auth, "Authentication") '/ /' guest '1' -- '' auth '/ Kite(auth_login, "Login") Kite(auth_register, "Registration") guest "1" --- "0..1" auth_login guest "1" --- "0..*" auth_register Sea(register_email, "Register via Email") auth_register ..> register_email : <> Fish(enter_email, "Enter Email without confirmation") Fish(enter_email_confirm, "Enter Email with confirmation") Fish(enter_password, "Enter Passwounrd") Fish(enter_username, "Enter Username") register_email ..> enter_email_confirm : <> register_email ..> enter_password: <> register_email ..> enter_username : <> Sea(login_google, "Login via Google OAuth") auth_login <.. login_google : <> Fish(choose_account, "Choose Google account") login_google ..> choose_account : <> choose_account "0..*" -- "1" google Sea(login_email, "Login via Email") auth_login <.. login_email: <> login_email ..> enter_email : <> login_email ..> enter_password: <> Sea(recover_password, "Password Recovery") auth_login <.. recover_password : <> Fish(enter_password_new, "Enter New Password") recover_password ..> enter_email_confirm : <> recover_password ..> enter_password_new : <> } package "Own Task Managment" { Kite(own_task_create, "Create new Task") user "1" --- "0..*" own_task_create Sea(own_task_create_name, "Enter Task Name") Sea(own_task_create_visibility, "Select Task Visibility") own_task_create ..> own_task_create_name : <> own_task_create ..> own_task_create_visibility : <> Kite(own_task_delete, "Delete Task") user "1" --- "0..*" own_task_delete Sea(own_task_delete_confirm, "Enter Confirmation Code form Email") own_task_delete ..> own_task_delete_confirm : <> Kite(own_task_update, "Update Task Attachments") user "1" --- "0..*" own_task_update Sea(own_task_update_type, "Select Attachment Type") Sea(own_task_update_content, "Select Attachment Content") Sea(own_task_update_visibility, "Select Attachment visibility") own_task_update ..> own_task_update_type : <> own_task_update ..> own_task_update_content : <> own_task_update ..> own_task_update_visibility : <> Kite(own_task_visibility, "Change visibility of the Task") user "1" --- "0..*" own_task_visibility Sea(own_task_visibility_private, "Set Private Task Visibility") Sea(own_task_visibility_public, "Set Public Task Visibility") Sea(own_task_visibility_paid, "Set Paid Task Visibility") own_task_visibility <.. own_task_visibility_private : <> own_task_visibility <.. own_task_visibility_public : <> own_task_visibility <.. own_task_visibility_paid : <> Kite(own_task_requests, "Manage Tasks Requests") user "1" --- "0..*" own_task_requests Sea(own_task_request_approve, "Approve Task Request") Sea(own_task_request_decline, "Decline Task Request") own_task_requests <.. own_task_request_approve : <> own_task_requests <.. own_task_request_decline : <> Kite(own_task_access, "Manage Task Access Rights") user "1" --- "0..*" own_task_access Sea(own_task_access_add, "Give Access for User") Sea(own_task_access_remove, "Remove Access of the User") Sea(own_task_access_update, "Update Access of the User") own_task_access <.. own_task_access_add : <> own_task_access <.. own_task_access_remove : <> own_task_access <.. own_task_access_update : <> /' } '/ package "Other Tasks Interactions" { actor "Payment Provider" as payment Kite(task_fork, "Fork existing Task") user "1" --- "0..*" task_fork Sea(task_fork_options, "Select Fork Options") task_fork ..> task_fork_options : <> Kite(other_task_request_managment, "Manage Task Requests") user "1" --- "0..*" other_task_request_managment Sea(request_add, "Add Attachment Request") Sea(request_update, "Update Attachment Request") Sea(request_remove, "Remove Attachment Request") Sea(request_revoke, "Revoke existing Request") other_task_request_managment <.. request_add : <> other_task_request_managment <.. request_update: <> other_task_request_managment <.. request_remove : <> other_task_request_managment <.. request_revoke : <> Kite(buy_task, "Buy Paid Task") user "1" --- "0..*" buy_task Sea(select_payment, "Select Payment Method") buy_task ..> select_payment : <> select_payment "0..*" -- "1" payment } package "Admin Panel" { Kite(manage_users, "Manage Users") admin "1" --- "0..*" manage_users Sea(review_users, "Review User Details") manage_users ..> review_users : <> Fish(create_user, "Create New User") Fish(view_user_profile, "View Private Data") Fish(delete_user_admin, "Delete User") Fish(block_user_admin, "Block User") review_users <.. create_user : <> review_users <.. view_user_profile : <> review_users <.. delete_user_admin : <> review_users <.. block_user_admin : <> Kite(manage_content, "Manage Content") admin "1" --- "0..*" manage_content Sea(review_content, "Review Content Details") manage_content ..> review_content : <> Fish(approve_content, "Approve Content") Fish(remove_content, "Remove Content") Fish(warn_user, "Warn Content Author") review_content <.. approve_content : <> review_content <.. remove_content : <> review_content <.. warn_user : <> } package "Task Group Management" { actor "Github Integration Provider" as github Kite(manage_tasks_in_groups, "Manage Tasks in Groups") Kite(manage_user_access, "Manage User's Access") Kite(manage_users_tg, "Manage Users") Kite(tg_manage_github, "Manage Github Integration") user "1" --- "0..*" manage_users_tg user "1" --- "0..*" manage_tasks_in_groups user "1" --- "0..*" manage_user_access user "1" --- "0..*" tg_manage_github Sea(add_user, "Add User") Sea(delete_user, "Delete User") manage_users_tg ..> add_user : <> manage_users_tg ..> delete_user : <> Sea(set_user_access, "Change Access Level") manage_user_access ..> set_user_access : <> Sea(tg_add_task, "Add Task to Group") Sea(tg_create_task, "Create new Task in Group") Sea(tg_remove_task, "Remove Task from Group") manage_tasks_in_groups <.. tg_add_task : <> manage_tasks_in_groups <.. tg_create_task : <> manage_tasks_in_groups <.. tg_remove_task : <> Sea(github_link_repository, "Link GitHub repository to the Group") Sea(github_unlink_repository, "Unlink GitHub repository from the Group") tg_manage_github <.. github_link_repository : <> tg_manage_github <.. github_unlink_repository : <> github_link_repository "0..*" -- "1" github github_unlink_repository "0..*" -- "1" github } } @enduml