Skip to content

Scoutradioz, a multi-team FRC scouting app developed by The Gearheads. Designed for and running on Amazon Web Services.

License

Notifications You must be signed in to change notification settings

FIRSTTeam102/scoutradioz

Repository files navigation

Scoutradioz logo

Scoutradioz is a multi-year FRC scouting app developed by The Gearheads which runs on Amazon Web Services (AWS).

Initially created in 2018, Scoutradioz has continually evolved as a platform. Here is a list of some of the features Scoutradioz offers:

  • Modular and configurable pit & match scouting surveys, so your organization can pick exactly what info you want to record and show
  • Automatic, individualized pit & match scouting assignments
  • Advanced reports and metrics
  • Event management tools such as auditing match assignments, swapping scouters in and out, and managing a list of members
  • And of course, it's completely free!

Please visit the wiki for documentation on how to use the app.

App structure

We use AWS Lambda, Express, MongoDB, and Node (LEMoN); as well as Pug, Atlas, S3, The Blue Alliance API, and many other libraries and packages.

Primary

This is the primary Lambda function that serves most user requests. The https://scoutradioz.com website runs on the Primary function.

Upload

This Lambda function handles two things:

  • Photo uploads to AWS S3
  • Dynamic generation of header images for push notifications, notifying scouters of an upcoming match assignment

(The latter was introduced after upload.scoutradioz.com was created, but both routes require image processing so we combined the two.)

Webhook

Scoutradioz is subscribed to The Blue Alliance's Firehose, which provides the site with up-to-date information on every supported match and event. This Lambda function handles data provided by the Firehose, and sends push notifications to scouters who are assigned to an upcoming match & have notifications enabled.

Helper packages

NOTE: Originally, the helper packages were published on NPM with the prefix @firstteam102 - https://www.npmjs.com/org/firstteam102 - but to simplify the process of updating the code, they are no longer being published to NPM and instead are being linked internally. For example, in primary's package.json, "@firstteam102/scoutradioz-utilities": "1.0.2" has been changed to "scoutradioz-utilities": "../scoutradioz-utilities/". Most of the @firstteam102 packages on NPM have been deprecated.

scoutradioz-utilities

A package that contains our database manager / caching wrapper.

scoutradioz-helpers

A package that contains helper functions needed across multiple packages, such as parsing match data, calculating metrics, and listing team images.

scoutradioz-http-errors

A small package that exposes a small handful of HTTP errors for use inside Express routes. We created this one instead of alternatives because it has no dependencies and only contains what we need.

scoutradioz-eslint

ESLint plugin, to assist development, which enforces a title being provided any time a page is rendered.

Localization

Weblate

We're translating Scoutradioz so FIRST teams and their members, friends, and family from all over the globe can use it in their preferred languages. Translation contributions can be submitted using Weblate.