brighter-trading/markdown/App_UseCase-Seq_Diagrams.md

6.7 KiB

Use Case Low Detail Overview:

@startuml

left to right direction
skinparam packageStyle rectangle

actor "User Interface" as User
rectangle "Flask App" as App {
  usecase "View Homepage" as ViewHomepage
  usecase "Change Settings" as ChangeSettings
  usecase "Fetch Candle History" as FetchCandleHistory
  usecase "Initialize Indicators" as InitializeIndicators
  usecase "Sign Up" as SignUp
  usecase "Sign In" as SignIn
  usecase "Sign Out" as SignOut

  User --> ViewHomepage
  User --> ChangeSettings
  User --> FetchCandleHistory
  User --> InitializeIndicators
  User --> SignUp
  User --> SignIn
  User --> SignOut
}

@enduml

Use Case Medium Detail Overview:

@startuml

left to right direction
skinparam packageStyle rectangle

actor "User Interface" as User
rectangle "Flask App" as App {
  usecase "View Homepage" as ViewHomepage
  usecase "Change Settings" as ChangeSettings
  usecase "Fetch Candle History" as FetchCandleHistory
  usecase "Initialize Indicators" as InitializeIndicators
  usecase "Sign Up" as SignUp
  usecase "Sign In" as SignIn
  usecase "Sign Out" as SignOut

  User --> ViewHomepage
  User --> ChangeSettings
  User --> FetchCandleHistory
  User --> InitializeIndicators
  User --> SignUp
  User --> SignIn
  User --> SignOut

  ViewHomepage --> (Log In)
  ViewHomepage --> (Connect to Alpaca Exchange)
  ViewHomepage --> (Retrieve Rendered Data)
  ChangeSettings --> (Adjust Setting)
  FetchCandleHistory --> (Retrieve Candle History)
  InitializeIndicators --> (Retrieve Indicator Data)
  SignUp --> (Create New User)
  SignUp --> (Log In)
  SignIn --> (Log In)
  SignOut --> (Log Out)
}

@enduml

Use Case View Homepage:

@startuml

left to right direction
skinparam packageStyle rectangle

actor "User Interface" as User
rectangle "Flask App" as App {
  usecase "View Homepage" as ViewHomepage
  usecase "Log In" as LogIn
  usecase "Connect to Alpaca Exchange" as ConnectToAlpaca
  usecase "Retrieve Rendered Data" as RetrieveRenderedData
  usecase "Retrieve Candle History" as RetrieveCandleHistory
  usecase "Retrieve Indicator Data" as RetrieveIndicatorData
  usecase "Log Out" as LogOut

  User --> ViewHomepage
  ViewHomepage --> LogIn
  ViewHomepage --> ConnectToAlpaca
  ViewHomepage --> RetrieveRenderedData
  ViewHomepage --> RetrieveCandleHistory
  ViewHomepage --> RetrieveIndicatorData
  ViewHomepage --> LogOut

  LogIn --> (Authenticate User)
  LogIn --> (Set User Session)
  ConnectToAlpaca --> (Set Alpaca API Keys)
  ConnectToAlpaca --> (Connect to Alpaca Exchange)
  RetrieveRenderedData --> (Load or Create User)
  RetrieveRenderedData --> (Connect User to Exchange)
  RetrieveRenderedData --> (Get Rendered Data)
  RetrieveCandleHistory --> (Get Candle History)
  RetrieveIndicatorData --> (Get Indicator Data)
  LogOut --> (Log Out User)
}

@enduml

Sequence Request Homepage

@startuml

actor "User Interface" as User
participant App as "Flask App"
participant BrighterTrades as "BrighterTrades"
participant Config as "Config"
participant UserStorage as "User Storage"

User -> App: Request Homepage
App -> BrighterTrades: Create BrighterTrades object
App -> Config: Load server configuration
App -> UserStorage: Load or create user
App -> BrighterTrades: Connect user to exchange
BrighterTrades -> Config: Retrieve API keys
App -> BrighterTrades: Get rendered data
App -> BrighterTrades: Get JS initialization data
App --> User: Serve Homepage

@enduml

Use Case Change Settings:

@startuml

left to right direction
skinparam packageStyle rectangle

actor "User Interface" as User
rectangle "Flask App" as App {
  usecase "Change Settings" as ChangeSettings
  usecase "Adjust Setting" as AdjustSetting

  User --> ChangeSettings
  ChangeSettings --> AdjustSetting

  AdjustSetting --> (Retrieve User Session)
  AdjustSetting --> (Check User Login)
  AdjustSetting --> (Get Setting)
  AdjustSetting --> (Update Setting)
}

@enduml

Sequence Change Settings

@startuml

actor "User Interface" as User
participant App as "Flask App"
participant BrighterTrades as "BrighterTrades"
participant Config as "Config"
participant UserStorage as "User Storage"

User -> App: Submit Settings Change
App -> BrighterTrades: Adjust Setting
BrighterTrades -> UserStorage: Get User Data
App --> User: Redirect to Homepage

@enduml

Use Case Fetch Candle History:

@startuml

left to right direction
skinparam packageStyle rectangle

actor "User Interface" as User
rectangle "Flask App" as App {
  usecase "Fetch Candle History" as FetchCandleHistory
  usecase "Retrieve Candle History" as RetrieveCandleHistory

  User --> FetchCandleHistory
  FetchCandleHistory --> RetrieveCandleHistory

  RetrieveCandleHistory --> (Get User Session)
  RetrieveCandleHistory --> (Check User Login)
  RetrieveCandleHistory --> (Retrieve Chart View)
  RetrieveCandleHistory --> (Fetch Candle Data)
}

@enduml

Sequence Request candle history

@startuml

actor "User Interface" as User
participant App as "Flask App"
participant BrighterTrades as "BrighterTrades"
participant Candles as "Candles"
participant UserStorage as "User Storage"

User -> App: Request Candle History
App -> BrighterTrades: Process Incoming Message
BrighterTrades -> UserStorage: Get User Data
App -> Candles: Get Candle History
Candles --> App: Return Candle History
App --> User: Serve Candle History

@enduml

Sequence Initialize Indicators:

@startuml

actor "User Interface"


"User Interface" -> app: Requests initialized indicators
activate app #005500
app -> Indicators: initialize indicators
activate Indicators #005500
Indicators -> app: return initialized indicators
deactivate Indicators

app -> "User Interface": Returns initialized indicators
deactivate app

@enduml

Sequence Sign in:

@startuml

actor "User Interface"

"User Interface" -> app: requests "Sign In"
activate app #005500
app -> "Sign In": enter email and password
activate "Sign In" #005500

"Sign In" -> app: authenticate user
deactivate "Sign In"

app -> "User Interface": Return "Signed In" result
deactivate app

@enduml

Sequence Sign up:

@startuml

actor "User Interface" as User

User -> app: send "Sign Up" request
activate app #005500
app -> "Sign Up": email, password, and confirm password
activate "Sign Up" #005500

"Sign Up" -> app: create new user
deactivate "Sign Up"

app -> User: Return "Signed Up" result
deactivate app

@enduml

Sequence Sign out:

@startuml

actor "User Interface" as User

User -> app: send "Sign Out" request 
activate app #005500
app -> "Sign Out": sign out user
activate "Sign Out" #005500

"Sign Out" -> app: clear user data
deactivate "Sign Out"

app -> User: return "Signed Out" result
deactivate app

@enduml