Challenge Overview
We really got some truly awesome submission for our last React Map Challenge in this Drone Series. This one should be a pretty fun one too. Much like the React Map challenge we just ran, we are going to keep with that spirit and let you choose the backend one last time. (Mongo seems to be the most popular choice since you get all the geo-queries natively) . For this challenge you will use a google map and a React front end to create a mission, save, delete or edit one
How cool is that! A mission is comprised of a series of gps locations that can either be waypoints or special points like home, takeoff, or land. There can be n waypoints which include a lat, long and altitude as a minimum parmaeter set. You must have 1 of each: Home, Takeoff and Land, however takeoff and home are usually the same. The points may also be special points like Delay or trigger a relay. You can explore this interface by looking at the these two Ground Control Station (GCS) clients: QGroundControl or APM planner which both create similar mission output. However QGroundControl's file is JSON and APM is fixed width delimited waypoints. That being said we want to follow the QGroundControl (this might be called mission planner on some windows versions) file format. We want to replicate this same mission creating experience however we are going to author it from the web. Luckily wont be the first to do this either. Mavelous by John Wiseman does a browser based client of the above to mentioned projects. We want to take that one step further and make this Multi-tenant hosted app on Heroku with the ability for users to create, store, and share missions with other users. At this point we are only concerned about creating, editing, storing and sharing the missions. We will push them down to the drone later.
Requirements:
1. Create a React front end running on express.
2. The App should support self service user creation using local accounts or OAuth (FB, GOOG, and Github)
3. Supported by either Mongo or postgres
4. If you submitted on the last React Map Challenge you may build off that if you prefer.
5. Users must have ability to create, name, save, edit and delete a mission. (share is optional)
6. The experience should be similar to what you would do on QGroundControl or APM planner with, at minimum, the basic command set: Waypoint, Spline
waypoint, Return Home, Land, Takeoff, Jump to item, Land Start and Delay. (optionally you may implement the advanced commands with the Camera
set and Advance set being the most valuable.
7. Once the mission is saved in your database it should look just like a .mission file from QGroundControl or APM planner.
8. An ideal solution will even let the user load a mission from a .mission file that has already been created QGroundControl see sample below or will allow the user to see and or save their mission file localy if they like.
Final Submission Guidelines
1. All submissions should be in a single zip file.2. Please include very detailed documentation which includes how to make the REST calls.
3. You documentation should also include a discussion on your choices.
4. Please include a video(s) of your solution in action. If you are not comfortable with spoke english you may annotate your video.
5. Since this is a compressed timeline you may substitute most of your documentation for video.
6. A prefered solution would be deployed to Heroku but this is optional.