Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,12 @@ For the moment, it does not work with docker compose. But if you install the clo
`nx affected:test --all --parallel --maxParallel 10 --watch` will run the tests affected by your code changes.

`npm run fixlint` to fix lint errors.

#### Architecture Diagram

- The PlantUML architectural diagram is located in doc/flyxc_arch.puml
- The doc/flyxc_arch.puml diagram depicts a visual representation of the different components of the flyxc app and the logical connections among components.
- PlantUML requires Java to be installed on your machine.
- Then download the plantuml.jar file and execute it to access PlantUML’s graphical user interface.
- https://plantuml.com/starting
- On VS Code, install the PlantUML extension. To preview diagrams: Press Alt + D to start PlantUML preview (option + D on MacOS).
Binary file added doc/flyxc.png
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

Few comments:

fxc-tiles is a local script to generate tiles and it stores the tiles in cloud storage.

  • It should not be marked as "frontend"
  • It should connect to storage instead of datastore - is it possible to annotate the connection with "airspace tiles" ?
  • the frontend connects to storage to retrieve the tiles

Redis:

  • Is connected to the server (fxc-server), not to the frontend directly
  • The server reads from Redis
  • There should be the fetcher too that retrieve the position from the live tracking platforms and push them to redis

Fetcher (to be added)

  • Reads the user list from the datastore
  • Collect the positions from the different live tracking platforms
  • Store the positions in Redis

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you rename the png to flyxc_arch.png?

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
58 changes: 58 additions & 0 deletions doc/flyxc_arch.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
@startuml flyxc_arch
!define GCPPuml https://raw.githubusercontent.com/Crashedmind/PlantUML-icons-GCP/master/dist
!include GCPPuml/GCPCommon.puml
!include GCPPuml/Compute/Cloud_Functions.puml
'!include GCPPuml/Networking/Cloud_Firewall_Rules.puml
!include GCPPuml/Compute/Compute_Engine.puml
!include GCPPuml/Storage/Cloud_Storage.puml
!include GCPPuml/Databases/Cloud_Datastore.puml
!include GCPPuml/Databases/Cloud_Memorystore.puml
!include GCPPuml/Compute/App_Engine.puml
!include GCPPuml/Compute/GPU.puml




/'
The other icons will need to come from other stdlib libraries
'/
'!include <awslib/AWSCommon>
!include <awslib/AWSSimplified.puml>
!include <awslib/Compute/all.puml>
!include <awslib14/FrontEndWebMobile/all.puml>
!include <awslib/general/all.puml>
!include <awslib14/ApplicationIntegration/all.puml>

'Elements
Users(Users, "Users", "Users")
FrontEndWebMobile(Mobile, "Mobile Users", "")
Client(Desktop, "Desktop Users", "")

Cloud_Datastore(Datastore, "Datastore", "Tracks, Accounts")
Cloud_Memorystore(Redis, "Redis", "GPS Positions, Status")
SimpleQueueServiceQueue(Message_Queue, "Message Queue (Elevation, Airspace)", "")
Cloud_Functions(Cloud_Function, "Cloud Function [run]", "Run Queues")
Compute_Engine(The_Server, "Compute Server [fxc-server]", "API, Static Files")
App_Engine(The_Frontend,"Frontend [fxc-front]", "Maps")
GPU(Airspace_Processing,"Frontend [fxc-tiles]", "Airspace Processing")
Cloud_Storage(Cloud_Storage, "Cloud Storage", "Airspaces")


'Relations:
Users -down-> Mobile: 1.
Users -down-> Desktop: 2.

Mobile -down-> The_Frontend: 3.
Desktop -down-> The_Frontend: 4.
Airspace_Processing -right-> The_Frontend: 5.
Redis -left-> The_Frontend: 6.
The_Frontend -down-> The_Server: 7.
The_Server -right-> Message_Queue: 8.
The_Server -down-> Cloud_Storage: 9.
The_Server -down-> Datastore: 11
Message_Queue -right-> Cloud_Function: 10.
Airspace_Processing -down-> Datastore: 12.
Cloud_Function -down-> Datastore:13.
Cloud_Function -down-> Cloud_Storage:14

@enduml