This is a Flutter-based scouting application designed for the FIRST Robotics Competition (FRC) game "Reefscape". The app provides a user-friendly interface for collecting match data during competitions and generates a QR code containing all the gathered information for easy transfer and analysis.
The primary goal is to streamline the scouting process by allowing scouters to quickly input data on a mobile device or desktop and then generate a scannable QR code or copy the data directly.
- Cross-Platform: Built with Flutter, enabling compilation for Android, iOS, Windows, macOS, Linux and Web.
- Structured Data Entry: Divides scouting data into logical sections:
- Prematch: Scouter Initials, Match Number, Robot Selection, Alliance Info, Team Number, Starting Position, No Show status.
- Autonomous: Moved status, Coral Scoring (Levels 1-4), Algae Scoring (Barge/Processor), Dislodged Algae, Auto Fouls.
- Teleop: Dislodged Algae, Pickup Location, Coral Scoring (Levels 1-4), Algae Scoring (Barge/Processor), Defense/Crossing Field, Tipped/Fell, Touched Opposing Cage, Died status.
- Endgame: End Position (Parked, Climb Levels), Broke status, Defended status, Coral HP Mistake, Yellow/Red Card status.
- Intuitive UI: Uses standard Flutter widgets like TextFields, Dropdowns, Switches, and custom Counter fields for efficient data input.
- QR Code Generation: Generates a QR code containing all collected data, separated by tabs (
\t
), upon clicking the "Commit" button. - Data Copying:
- Option to copy the raw tab-separated data string directly to the clipboard.
- Option to copy a comma-separated list of the data column headers (useful for setting up spreadsheets).
- Form Reset: Quickly clears most fields and increments the match number for the next match, keeping scouter initials and robot selection.
- Dark Theme: Features a visually appealing dark theme suitable for event environments.
- Schedule Import (.txt): Load a simple .txt with Event name, Scouter IDs, their assigned matches, robot positions (Blue 1..Red 3), and team numbers. After loading, the app pops up for Scouter ID, then offers that scouter’s matches and auto-fills scouter, match number, robot position, and team.
- Fill the Form: Enter all relevant data for the match in the corresponding fields across the Prematch, Autonomous, Teleop, and Endgame sections.
- Commit Data: Once the match is complete and data is entered, click the "Commit" button.
- Scan or Copy:
- A dialog box will appear displaying a QR code. Scan this code using a compatible QR scanning application or device.
- Alternatively, use the "Copy Info" button to copy the tab-separated data string or the "Copy Columns" button to copy the CSV header row.
- Reset for Next Match: Click the "Reset Form" button. This will clear the form data (while incrementing the match number and keeping scouter/robot info) ready for the next match scouting.
-
Prepare a plain text file with this flexible format:
- First line (optional):
Event: <Event Name>
- One assignment per line in the form:
ScouterID, MatchNumber, Position, TeamNumber
- Separators supported: commas, tabs, or two-or-more spaces. Lines starting with
#
are ignored.
Example:
Event: Beach Blitz 2025 # ScouterID , Match , Position , Team ANA, 1, Blue 1, 1234 ANA, 3, Red 2, 5678 LEO, 1, Blue 2, 4321 LEO, 3, Red 3, 8765 # positions can be in any case; "blue1" or "Red 3" also work
- First line (optional):
-
In the app, click the upload icon (Load Schedule) and select your
.txt
. -
Enter or pick the Scouter ID when prompted.
-
Use the "Select Match" dropdown shown at the top header to switch between that scouter’s assigned matches. The app auto-fills Scouter Initials, Match Number, Robot, and Team Number.
You need to have the Flutter SDK installed.
-
Clone the repository:
git clone <your-repository-url> cd overture_qr_scouting
-
Get dependencies:
flutter pub get
-
Build for your target platform:
- Android:
flutter build apk
orflutter build appbundle
- iOS:
flutter build ios
(Requires macOS and Xcode setup) - Windows:
flutter build windows
(Requires Windows setup enabled viaflutter config --enable-windows-desktop
) - macOS:
flutter build macos
(Requires macOS and Xcode setup) - Linux:
flutter build linux
(Requires Linux setup enabled viaflutter config --enable-linux-desktop
)
The output files will be located in the
build
directory within your project folder. - Android: