Simple drone flight visualization monorepo.
Note: ideally we should split apps into repositories but for demo purposes this will be a monorepo containing
rustandreactapps.
- Cargo, Rust
- NodeJS
- Yarn
- Docker
Build a package
make build package=<server|ui|simulator>Run a package
make run package=<server|ui|simulator>Test a package
make test package=<server|ui|simulator>docs/: text and image assets for documentationpackages/:fviz-server/:rustweb serverfviz-ui/:reactclient appfviz-simulator/:goproject to simulate devices/actors
sequenceDiagram
fviz-device->>+fviz-server: ws/status (postition, system health)
fviz-server->>+fviz-ui: ws/device-status (postition, system health)
fviz-server->>+fviz-device: ws/commands (land, new position)
fviz-ui->>+fviz-server: ws/command (land, new position)
Each status update from a device/actor should be formatted as follow
<command> // note the line break
<lat> <lng> <alt>
sequenceDiagram
fviz-(ui|simulator)->>+fviz-server: HTTP POST /handshake { client: "fviz-ui-000" }
fviz-server-->>fviz-(ui|simulator): HTTP { session_uuid: "18868b27-b1b6-4a09-998b-44ffa1daf114" }
fviz-(ui|simulator)-->>fviz-server: HTTP POST /ws/{session_uuid}
fviz-server-->>fviz-(ui|simulator): Connection: upgrade WS
We relay on warp to handle http and ws requests. tokio is being used for multithreading.
In this repository commits messages are formatted following conventional commits. You will need a linter running locally.
npm i -g @commitlint/cli @commitlint/config-conventionalTo set git hooks for commit linting messages run
make init-git- Setup Rust CI
- Setup React CI
- SetReact Yarn 2
- Setup ESLint
- Setup Stylelint
- Build docker images
- Setup deployments
- Setup renovate bot
- Setup commit lint (ci or local)
- Setup PR check (size, title, etc)
- Add logs to server
- Set Swagger documentation from warp handlers
- Load configuration in memory
- Setup server graceful shutdown
- Setup postgres with docker compose
- Setup rate limit and payload size

