One of DroneShield's missions is to provide the best Counterdrone defence in an emerging industry. This challenge involves building a simulator for Counter UAS involving the detection of drones. Please spend no more than 6 hours on this challenge as we want you to have a life :). If you do more tasks then we expect less detail in the individual tasks given the time constraints. This should be a fun exercise.
Please provde an explanation with what could be done to improve your work if given more time (bullet points acceptable). Feel free to use any libraries and discuss advanced concepts in the readme because our challenge does not showcase your vast knowledge. :D
# The sample starts at Sydney airport and flies diagonally indefinitely, feel free to add an upperbound or reverse the direction.
npm i
npm start
# Websocket endpoint, use your favourite WS client
ws://localhost:8080
- Frontend Engineers (Frontend Task)
- Backend Engineers (Backend Task)
- Fullstack Engineers (Frontend and Backend Tasks [Choice of one or simple versions of both])
- Lead or Polyglot Engineers (Frontend, Backend and Infrastructure Tasks [Choice of two or simple versions of all three])
- Technology Preference: VueJs or ReactJs
- Objective: Make a page that displays the drone movement through the websocket in realtime such as a map or summary page. Time is limited so pick the easier of the two if you are completing multiple tasks. If only completing this taks please display both, feel free to add more mock detail to the websocket.
- Design System choice (A brief explanation of your chosen UI library and Why) (Required)
- Junior Engineers: Using known libraries without customisation is acceptable.
- Midtier Engineers: More emphasis will be given to CSS and custom component design (not necessarily entirely from scratch but able to show customisation of base components from a UI library like Material UI). Your work will demonstrate knowledge of the state management lifecycle.
- Senior Engineers: Data flow and rendering efficiency (performance) will be prioritised. Your work will demonstrate such concepts such as code splitting (lazy loading) and where to connect state at parent or child components. If you feel your design implementation doesn't need to contain these feel free to discuss these topics indepth in the readme and how it prevents excessive renders and/or improves performance.
- Technology Preference: NodeJs, GoLang, Ruby or Python
- Objective: Make two microservices that interface with each through redis publish and subscribe. One microservice that publishes to redis the coordinates of the drone and another microservice that subscribes to the event and pushes to a websocket (similar to the sample). Additionally make a selectable simulated flying pattern of the drone such as "Figure 8", "Circle" or "Zigzag". More advanced and intelligent flight paths will be given additional brownie points.
- Junior Engineers: Single microservice as a monolith is acceptible (no pubsub required just websocket and custom drone path).
- Midtier Engineers: Substituting Redis pubsub with Rest API for intra microservice communication is acceptable.
- Senior Engineers: Other queue like technologies instead of redis such as RabbitMQ and Kafka are acceptable. As the challenge is fairly simple feel free to discuss microservice architecture to improve performance, techniques for seperation of concerns, clean architecture and/or domain driven design.
- Architecture Diagram (Required)
- Technology Preference: Docker-compose or Kubernetes
- Objective: Dockerize the above with docker build files and provide a runnable docker-compose solution. If feeling creative provide kubernetes/helm templates to run on minikube.
- Architecture Diagram (Required)