{"id":24959583,"url":"https://github.com/frc4607/scouting-app","last_synced_at":"2026-04-29T08:33:18.620Z","repository":{"id":65392220,"uuid":"540155098","full_name":"FRC4607/Scouting-App","owner":"FRC4607","description":"A custom web application for scouting pits and matches at competitions. This app is used by the team to improve competition strategy and effectiveness.","archived":false,"fork":false,"pushed_at":"2026-04-04T18:25:06.000Z","size":8567,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-04-04T20:27:26.751Z","etag":null,"topics":["frc","scouting","strategy","vuejs","webapp"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FRC4607.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-09-22T20:18:06.000Z","updated_at":"2026-04-04T18:25:10.000Z","dependencies_parsed_at":"2024-01-31T23:31:59.414Z","dependency_job_id":"73d91eb7-0fb3-4b29-b27e-ae21e7b8db60","html_url":"https://github.com/FRC4607/Scouting-App","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/FRC4607/Scouting-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FRC4607%2FScouting-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FRC4607%2FScouting-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FRC4607%2FScouting-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FRC4607%2FScouting-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FRC4607","download_url":"https://codeload.github.com/FRC4607/Scouting-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FRC4607%2FScouting-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32417680,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["frc","scouting","strategy","vuejs","webapp"],"created_at":"2025-02-03T07:47:31.677Z","updated_at":"2026-04-29T08:33:18.614Z","avatar_url":"https://github.com/FRC4607.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CIS Scouting App\n\n## Overview\n\nThis app is a modified version of the [Black Hawks Scouting](https://github.com/FRC2834/blackhawks-scouting) app. The app is able to run in either a docker container or some other NodeJS compatible environment. It has integration with a MySQL database for external management and analysis along with a CSV export.\n\nPowered by [Vue.js](https://vuejs.org) and [The Blue Alliance](https://thebluealliance.com).\n\n## Features\n\n- Offline app and data storage\n- Works with most web browsers\n- Data transfer between devices via QR codes. (Requires a HTTPS connection)\n- MySQL database integration\n- Configurable without code changes by using pre-made widgets (see [config.md](docs/config.md) in docs)\n\n## Setup\n\n1. Obtain a Blue Alliance read API key from the [account page](https://www.thebluealliance.com/account).\n2. Create a file named `.env.local` in the root folder and inside of it put: `VITE_TBA_API_KEY=`***```your_api_key```***\n3. Install dependencies:\n   ```bash\n   npm run installPackages\n   ```\n4. Setup the database. If `backend/knexfile.ts` does not exist, copy it from the example:\n   ```bash\n   cp backend/knexfile.example.ts backend/knexfile.ts\n   ```\n   Then update `backend/knexfile.ts` with your database credentials. By default, the `development` environment uses SQLite. For PostgreSQL, update the `staging` or `production` section with your connection details.\n5. Run database migrations:\n   ```bash\n   npm run knex-migrate\n   ```\n   If targeting a non-development environment (e.g. production), set `NODE_ENV` first:\n   ```bash\n   # Linux/macOS\n   NODE_ENV=production npm run knex-migrate\n\n   # Windows PowerShell\n   $env:NODE_ENV = \"production\"; npm run knex-migrate\n   ```\n6. (Optional) If you plan to use the pictureupload widget, create a file named `imageServerConfig.ts` in the root folder:\n\n```ts\nexport const imageServerConfig =  {\n    \"server\": \"your hostname or IP (eg. host.com)\",\n    \"username\": \"your username\",\n    \"password\": \"your password\"\n  }\n```\n\n## Running the App\n\n### Development\n\nStart the frontend development server:\n```bash\nnpm run dev\n```\n\nIn a separate terminal, start the backend server:\n```bash\nnpm run dev:backend\n```\n\n- **Frontend**: http://localhost:5173/\n- **Backend API**: http://localhost:4173/\n\n### Production Build\n\n**Linux:**\n```bash\nnpm run build-linux\nnpm run run\n```\n\n**Windows:**\n```bash\nnpm run build-windows\nnpm run run\n```\n\n**Docker:**\n```bash\n# Build and run locally\nnpm run docker-build\nnpm run docker-run\n\n# Build and push to Docker Hub\nnpm run docker-deploy\n```\n\n### Database Migrations\n\nCheck migration status:\n```bash\nnpm run knex-status\n```\n\nApply pending migrations:\n```bash\nnpm run knex-migrate\n```\n\n## Configuration\n\n### Frontend\n\nConfiguring the interface and data fields is easy and codeless! You just need to add widget configurations to a couple JSON files. Refer to [config.md](docs/config.md) in docs for details.\n\n### Backend\n\nThe backend uses JSON schemas and Knex migrations to define data fields. When updating the scouting form fields:\n\n1. Update the config files in `public/assets/` (`config-matches.json`, `config-pits.json`)\n2. Update the JSON schemas in `backend/schemas/`:\n   - `match_scout_entry.schema.json`\n   - `pit_scout_entry.schema.json`\n   - `api_request.schema.json`\n3. Update the TypeScript types in `backend/schemas/` (`.d.ts` files)\n4. Update the models in `backend/src/models.ts`\n5. Update the conversions in `backend/src/conversions.ts`\n6. Create a new migration in `backend/migrations/` to update the database schema\n7. Run `npm run knex-migrate` to apply the changes\n\nThe naming scheme in config files must be consistent with the schema definitions. The `name` field should use lowercase with underscores (eg. \"Hello There\" becomes \"hello_there\").\n\n### Flexibility\n\nBlack Hawks Scouting works in your browser and runs anywhere, no matter if you're scouting on a tablet or testing on a computer.\n\n**No download is required on any of your scouting devices!** Once you visit the app on a device, you can bookmark it or save it to your home screen. It'll continue to work, even offline.\n\nThere are no restrictions on what you can use to analyze your data - Black Hawks Scouting exports in a standard format called Comma-Separated Values (CSV). Your team has the option to use anything from custom Python scripts to professional-grade tools like Tableau and Excel.\n\n### Ease of Use\n\nEven with its advanced features, Black Hawks Scouting is designed to be approachable by your team's scouters. You can easily navigate within scouting forms with a navigation menu at the bottom of each form.\n\nBlack Hawks Scouting also provides a built-in Data Inspector allowing you to view and manage your scouted data, before you download them.\n\n### Offline Usage\n\nWith internet often being unreliable at competitions, Black Hawks Scouting has the capability to work fully offline by making use of special browser features. Once you load it with an internet connection, it remains available on your device with the same URL, even without an internet connection or download.\n\n*Tip: You can use The Blue Alliance data offline too!* Once you load match information online from a form's Team Selection page, Black Hawks Scouting caches it in local storage. On subsequent scouting sessions, you can leave the Event Key field blank and press the Load button to use the cached data. This is faster than an online load and doesn't require internet.\n\n### Security\n\nBlack Hawks Scouting uses standard obfuscation techniques to isolate your TBA key from the app's source code. This makes it harder for users to access your key, but because the app runs entirely in the user's browser, it cannot completely hide the key.\n\nThe app also supports the security features of your browser, working even with HTTPS, tracking protection, and cookie blocking.\n\n## System Requirements\n\nBlack Hawks Scouting can work on Windows, macOS, and Linux. In addition, mobile devices with Android and iOS are also supported. The following browser versions are recommended:\n\n- Google Chrome 100+\n- Microsoft Edge 100+\n- Mozilla Firefox 100+\n- Apple Safari 15.5+\n\n## Open Source\n\n#### License\n\nLicensed under the MIT License, see the [license document](/LICENSE.txt) for the full license terms.\n\n#### Contributing\n\nContributions are welcome and encouraged! Please feel free to open issues for problems you encounter or feature requests you come up with. If you would like to contribute code, please open a pull request and describe your changes and reasoning for them. Thank you in advance for your help!\n\n## Credits\n\nThis program uses modified images from\n\u003chttps://www.chiefdelphi.com/t/2024-crescendo-top-down-field-renders/447764\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrc4607%2Fscouting-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrc4607%2Fscouting-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrc4607%2Fscouting-app/lists"}