Skip to content

System Design

Robert L edited this page Nov 8, 2024 · 11 revisions

System Design

flowchart TD

    F@{ shape: rect, label: "Racer Mobile Client"}
    R@{ shape: rect, label: "RC Web Client"}
    B@{ shape: rect, label: "Backend"}
    D@{ shape: database, label: "Database"}
    RD@{ shape: database, label: "RC Database"}
    FLD@{ shape: database, label: "Local Storage"}

    F <--> B
    R <--> B
    RD <--> R
    F <--> R
    F <--> FLD
    B <--> D

Loading

Architecture

Database Structure

erDiagram

    tracks {
        int Id
        REPLACE_ME REPLACE_ME
    }

    boatrace {
        int ParticipantsId
        int RacesId
    }

    results {
        int Id
        REPLACE_ME REPLACE_ME
    }

    races {
        int Id
        REPLACE_ME REPLACE_ME
    }

    regattas {
        int Id
        string Name
        string Description
    }

    courses {
        int Id
        REPLACE_ME REPLACE_ME
    }

    boats {
        int Id
        REPLACE_ME REPLACE_ME
    }

    ratings {
        int Id

    }

    coursemarks {
        int Id
        REPLACE_ME REPLACE_ME
    }

    regattas ||--|{ races: REPLACE_ME
    courses ||--|{ races: REPLACE_ME
    races ||--|{ results: REPLACE_ME
    races ||--|{ tracks: REPLACE_ME
    races ||--|{ boatrace: REPLACE_ME
    courses ||--|{ coursemarks: REPLACE_ME
    coursemarks ||--|{ coursemarks: REPLACE_ME

    ratings ||--|{ boats: REPLACE_ME
    results ||--|{ boats: REPLACE_ME
    tracks ||--|{ boats: REPLACE_ME
    boatrace ||--|{ boats: REPLACE_ME
Loading

API Endpoints

Network

Sequence Diagrams

[Core Feature 1] Ability to Share the Current Path Taken


sequenceDiagram

participant R as Racer(s)
participant C as Race Coordinator 
participant B as Backend

loop Every (Time interval)
    alt has Internet Connection
        R ->>+ B: send Location
        B -->>+ C: send Location of Racer

        C ->>- B: send Location of Racers(s)
        B -->>- R: send Location of Racer(s)
    else has RC Connection
        R ->>+ C: send Location
        C -->>+ B: send Location of Racer(s)
        B -->>- C: send Location of Racer(s)
        C -->>- R: send locaiton of Racers(s)
        Note over B: Hold Transfers
    else has No Connection
        Note over R,B: Hold Transfers
    end
    opt Update Both
        R ->>+ B: send Location
        B -->>- C: send Location of Racer

        R ->>+ C: send Location
        C -->>- B: send Location of Racer
    end
end
Loading

[Core Feature 2] Server can Handle Moderate Loads


sequenceDiagram

participant R as Racer(s)
participant C as Race Coordinator 
participant B as Backend

Note over R,B:. . . 

rect rgba(10,10,100,.25)
    R ->>+ B: receiving
    B -->> R: sending
    B -->>- C: sending
end

rect rgba(100,10,10,0.25)
    C ->>+ B: receiving
    B -->> R: sending
    B -->>- C: sending
end
Loading

[Core Feature 3] Ability to Manage Race Course


sequenceDiagram

participant I as Racer / Coordinator
participant B as Backend

I ->>+ B: request a Race Course
alt Item Does Exist
    B -->> I: return a Race Course
    activate I
else Item Does NOT Exist
    B -->>- I: {404} Not Found
    
end
I ->>+ B: submit (New / Modified) Race Course
deactivate I

B -->>- I: return return results
Loading

[Core Feature 4] Offline Capabilities


sequenceDiagram

participant R as Racer(s)
participant C as Race Coordinator 
participant B as Backend

loop Every (Time interval)
    alt has RC Connection
        R ->>+ C: send Info
        C -->>- R: send Info of Racers(s)
        Note over B: Hold Transfers
    else has No Connection
        Note over R,B: Hold Transfers
    end
end

Loading

[Core Feature 5] Ability to See Race Results


sequenceDiagram

participant R as Racer
participant C as Race Coordinator 
participant B as Backend

alt has Internet Connection
    R ->>+ B: request Race Results
    B ->>+ C: check for race updates
    C -->>- B: send any race updates
    B -->>- R: send Race Results

else has RC Connection
    R ->>+ C: request Race Results
    C -->>- R: send Race Results

else has No Connection
    Note over R,B: Hold Request
end
Loading

{eof}

  • Sailing Race Analyzer
  • Features
    • Web App
    • Mobile App
  • Repo
  • Issue Tracking
  • Branching
  • Dev Tools & Programs
  • Architecture
  • Database Structure
  • Network
  • Sequence Diagrams
  • Backend
  • REACT
  • Flutter

Clone this wiki locally