FIRSTTeam102 / scoutradioz

Scoutradioz, a multi-team FRC scouting app developed by The Gearheads. Designed for and running on Amazon Web Services.
https://scoutradioz.com
Other
24 stars 9 forks source link
aws-lambda first-robotics-competition frc frc-scouting nodejs

Scoutradioz logo

scoutradioz.com

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:

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:

(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.