Skip to content

Instantly share code, notes, and snippets.

@strugee
Last active August 29, 2015 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save strugee/826fa89c2b996ff6ecc6 to your computer and use it in GitHub Desktop.
Save strugee/826fa89c2b996ff6ecc6 to your computer and use it in GitHub Desktop.
Proposal for an FTC scouting app

Description

During the regular FTC season we've often wished that we had an app for scouting. Let us build this app. It would expose a RESTful, JSON-based API that would allow you to:

  • Input the match schedule
  • Query the match schedule
  • Input available scouters
  • Query available scouters
  • Define which teams should be scouted and the relative priority of those teams
  • Query calculated individual scouter schedules
  • Submit scouting data responding to the hard-coded fields for that year's game, along with any custom scouting fields
  • Query scouting results

Additionally, we will build a mobile web client on top of the base API that would allow you to:

  • Input the match schedule
  • Display the match schedule
  • Highlight teams in the match schedule
  • Register as a scouter
  • Display your personal scouting schedule
  • Submit scouting results
  • Display scouting results
  • Continue working should the connection to the server become unavailable

If there is time, the API will be expanded such that you can:

  • Query scouting results statistics
  • Define permissions for who can see computed schedules, who can see scouting results and statistics, who can choose the schedule algorithm, and who can define permissions
  • Choose the algorithm used to calculate scout schedules (match-based, where scouters are allocated to random teams so that breaks, etc. are accounted for; team-based, so that scouters have consistent teams but at cost to timing optimizations; or manual)
  • Input robot capability data
  • Query elimination round recommendations based on overall match performance, specific capability performance, and robot capability compatibility
  • Override individual scouter schedules
  • Define custom scouting fields

Then, the web client will be expanded such that you can:

  • Input robot capability data
  • Set permissions, should you have sufficient authorization
  • Set scout schedule algorithms, should you have sufficient permission
  • Override individual scouting schedules, should you have sufficient permission
  • Display scouting results statistics, should you have sufficient permission
  • Define custom scouting fields

Proposed timeline

All tables are organized chronologically in terms of man-hours, but can be completed somewhat in parallel, should there be sufficient people. The only exception to this is that login probably needs to be developed on the backend and frontend at the same time, due to the complexity involved in doing this securely.

Time estimates are extremely conservative. (And note that this will go a lot faster than projects during the season because there aren't e.g. chains that fall off.)

Backend API timeline

|-----------------------------------------------------------------| | Scaffold basic application | 1 hour | |-----------------------------------------------------------------| | Implement schedule APIs | 2 hours | |-----------------------------------------------------------------| | Implement scouting priority APIs | 2 hours | |-----------------------------------------------------------------| | Implement an accounts system | 3 hours | |-----------------------------------------------------------------| | Implement the ability to register scouters with teams | 1 hour | |-----------------------------------------------------------------| | Allow querying scouter schedules | 4 hours | |-----------------------------------------------------------------| | Allow submission of scouting results | 3 hours | |-----------------------------------------------------------------| | Implement querying of scouting results | 1 hour | |-----------------------------------------------------------------|

Web client timeline

|--------------------------------------------------------------------------------------------------| | Design user interface | 3 hours | |--------------------------------------------------------------------------------------------------| | Template basic application | 2 hour | |--------------------------------------------------------------------------------------------------| | Allow logging in | 2 hours | |--------------------------------------------------------------------------------------------------| | Allow submission of match schedule | 1 hour | |--------------------------------------------------------------------------------------------------| | Allow choosing which teams should be scouted | 1 hour | |--------------------------------------------------------------------------------------------------| | Allow display of match schedule | 1 hour | |--------------------------------------------------------------------------------------------------| | Allow highlighting of scouter match assignments and of scouter's own robot in schedule | 1 hour | |--------------------------------------------------------------------------------------------------| | Allow results submission | 1 hour | |--------------------------------------------------------------------------------------------------| | Implement results display | 2 hours | |--------------------------------------------------------------------------------------------------| | Persist all resources offline | 4 hours | |--------------------------------------------------------------------------------------------------|

Expected number of people who will work on the project

Flexible. Max ~4 on the web client, ~4 on the backend API, for a total of approximately 8 maximum. So far Aidan and I have committed (Isaac is interested after the season ends).

Projected economics

None

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment