The Scouting Data Dashboard is a comprehensive tool designed for FIRST Robotics Competition (FRC) teams to manage scouting data effectively. This project is divided into three main components: the client, the server, and the worker scripts. This project was initially developed for Team 9432, but we are happy to open it up to the public, allowing other team's to modify it to work with their own Scouting Systems.
The client side of the dashboard is a React application that provides a user-friendly interface to display and interact with the scouting data.
To set up and run the client:
- Navigate to the
scouting-system-clientdirectory:cd scouting-system-client - Install the necesarry packages using npm:
npm install
- Start the Application:
npm start
The application will be available at 'http://localhost:3000'
The server is built with Kotlin using the ktor framework. It handles API rrequests fromt he client and interacts with PostgresSQL database to fetch or update data.
####Running the server To launch the server:
- Navigate to the
Scouting-System-Serverdirectorycd Scouting-System-Server - Run the server using gradle
./gradlew run
The server will start and lsiten for requests on its configured port
The worker consists of two Python scripts:
- Setup.py fills the database with initial data such as team names, number, and the competition schedule. You will need to modify this script to use your own API key and ensure it is pulling data from the event you are participating at
- Worker.py is designed to be run via Apple Automator, but other Automation software available on other Operating Systems should work as well.
-
To run Setup.py:
python3 Setup.py
-
To set up 'Worker.py'
- Open Apple Automator and create a new "Folder Action" script
- Set the folder to watch as '/Volumes' (this corresponds to mounted drives)
- Add a "Run Shell Script" Action and unclude this command: "python3 path/to/Worker.py <expected file>" Where expected file is a .csv holding your data
- Save and activate the Automator Action
- The Setup.py script should allow for event info to be passes in as a Command Line argument when running the script, eliminating the need to modify the script between events
- The KTOR API should be modified to use an ORM, allowing for different teams to easily swap database systems
- The API can be improved by serving more data, less frequently, and endpoints should be organized in controllers as the functionality grows.
- The Client Application has a known issue where it does not work on safari, API requests are never properly received
- Project naming shoudl be more consistent, Server proejct has each word capitalized, whereas other two proejcts are lowercase.
- Adding a coding standard for each language is on the Radar for Team 9432, once these standards are implemented, formatting will change as is applicable.
- All code should be commented and have improved documentation.
