{"id":15149441,"url":"https://github.com/miscar/scouting","last_synced_at":"2025-10-24T05:31:47.795Z","repository":{"id":45937332,"uuid":"352741788","full_name":"MisCar/Scouting","owner":"MisCar","description":"A website and PWA for scouting teams at FRC competitions.","archived":false,"fork":false,"pushed_at":"2023-11-30T18:48:33.000Z","size":5517,"stargazers_count":11,"open_issues_count":5,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-31T00:07:32.597Z","etag":null,"topics":["angular","frc","pwa","scouting"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MisCar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2021-03-29T18:16:05.000Z","updated_at":"2023-11-30T18:48:37.000Z","dependencies_parsed_at":"2024-09-26T14:00:31.811Z","dependency_job_id":"48980d43-8b6d-43ce-a405-e02da7993c34","html_url":"https://github.com/MisCar/Scouting","commit_stats":{"total_commits":56,"total_committers":6,"mean_commits":9.333333333333334,"dds":0.4107142857142857,"last_synced_commit":"161bb361fcd69c9743201dc68961b5d79a61dbb0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MisCar%2FScouting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MisCar%2FScouting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MisCar%2FScouting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MisCar%2FScouting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MisCar","download_url":"https://codeload.github.com/MisCar/Scouting/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237918710,"owners_count":19387305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["angular","frc","pwa","scouting"],"created_at":"2024-09-26T14:00:23.367Z","updated_at":"2025-10-24T05:31:37.785Z","avatar_url":"https://github.com/MisCar.png","language":"TypeScript","readme":"\u003ch1 align=\"center\"\u003e\n    \u003cimg src=\"src/assets/icons/icon.png\" width=\"256\"\u003e\n    \u003cbr /\u003e\n    Scouting\n    \u003cbr /\u003e\n      \u003cimg src=\"https://img.shields.io/badge/version-2-purple.svg\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\"\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003e\n    A website and PWA for scouting teams at FRC competitions built with \u003ca href=\"https://angular.io\"\u003eAngular\u003c/a\u003e, \u003ca href=\"https://material.angular.io\"\u003eMaterial\u003c/a\u003e and \u003ca href=\"https://firebase.google.com\"\u003eFirebase\u003c/a\u003e\n\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n    💡 \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e\n    \u0026nbsp;\u0026middot\u0026nbsp;\n    🏃 \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n    \u0026nbsp;\u0026middot\u0026nbsp;\n    🚗 \u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\n    \u0026nbsp;\u0026middot\u0026nbsp;\n    ⚠️ \u003ca href=\"#common-issues\"\u003eCommon Issues\u003c/a\u003e\n    \u0026nbsp;\u0026middot\u0026nbsp;\n    ❓ \u003ca href=\"#frequently-asked-questions\"\u003eFAQ\u003c/a\u003e\n\u003c/p\u003e\n\n## Features\n\n- Customizable Schema\n\n  - Sections and widgets can be customized to fit your team's analysis criteria.\n  \u003cp align=\"center\"\u003e\n    \u003cimg alt=\"schema\" src=\"https://user-images.githubusercontent.com/88707580/141786924-28b0a64e-bfef-40bd-9ef2-c137e6f9397b.png\" height=\"600\"\u003e \n  \u003c/p\u003e\n\n- Offline Work\n- Simple Cross-Platform Installation\n- Completions and Verification using The Blue Alliance\n- Quick Overview of Missing and Invalid Scouts\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"schema\" src=\"https://user-images.githubusercontent.com/88707580/141787195-a28a8a48-31a7-419a-972a-c95d0ea9d646.png\" height=\"600\"\u003e \n\u003c/p\u003e\n\n- In-App Schema Editor\n- Minigames\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"schema\" src=\"https://user-images.githubusercontent.com/88707580/141787255-bd9559ad-20c9-48cf-b5b8-cbb0ea44a2a0.png\" height=\"600\"\u003e \n\u003c/p\u003e\n\n- Security\n\n## Getting Started\n\n- Download the repository, either with `git clone https://github.com/miscar/Scouting` or by downloading the zip archive from GitHub.\n- Install [NodeJS](https://nodejs.org/en/download/) and the Node Package Manager.\n- Install Scouting's dependencies by running `npm install` in the command-line inside the repository. You may need to run `npm install --force`.\n- Create a new project by running `npm run create`.\n- Open the [Firebase Console](https://console.firebase.google.com).\n- Enable Cloud Firestore by clicking `Firestore Database` in the side panel and then `Create database`. You may start in production/test mode (this will get overridden upon deploy), and pick your own Cloud Firestore location.\n\n![image](https://user-images.githubusercontent.com/88707580/144745623-90d8f405-90aa-49e6-a73a-00f31a96d18a.png)\n\n- Enable Firebase Authentication by clicking `Authentication` in the side panel and then `Get started`.\n\n![image](https://user-images.githubusercontent.com/88707580/144745739-613a95e3-787f-4bdd-8219-c400ddd268dd.png)\n\n- Enable Google Authentication by clicking `Google` under `Additional providers`, and then `Enable`. Select a project support email and then hit `Save`. Make sure you're in the `Sign-in method` tab.\n\n![image](https://user-images.githubusercontent.com/88707580/144745826-0e5c4ea2-5a8b-4339-a9cf-988d661dfc21.png)\n\n- Deploy the app to Firebase Hosting and the firestore rules by running `npm run deploy`.\n- Sign in with your Google Account to the live instance, find the UUID in Firebase Authentication and enter it into an \"admins\" document in the \"admin\" collection inside an array called `users`.\n- That's it! You now have a fully usable Scouting instance.\n\n### Dashboard\n\nYou may create a copy of [this](https://docs.google.com/spreadsheets/d/1NOD7aGRPPc0cSSQ7eraKIjULRJrQ1xT-7rlkZ3AyF1I/edit?usp=sharing) Google Sheets document which contains a basic Google Apps Script to fetch all of the data from Firestore.\nTo set it up, you'll need to get your Firebase service worker and plug it into the script.\n\n- Open the Firebase project settings:\n\n![image](https://user-images.githubusercontent.com/88707580/144745084-18f6bb99-bb59-4778-80f6-0e972680d5a6.png)\n\n- Open the service accounts tab:\n\n![image](https://user-images.githubusercontent.com/88707580/144745233-40fea63c-aba8-44e3-a3d0-bba1a0754b2b.png)\n\n- Open the script like so:\n\n![image](https://user-images.githubusercontent.com/88707580/144744971-d00b5a52-1dca-43f2-9f19-abcebd542393.png)\n\n- Paste the service account mail into the Google Apps Script placeholder.\n- Click `Generate new private key`, then `Generate key` and open the JSON file.\n- Copy the `project_id` and `private_key` (from `----BEGIN` to `-----END`) exactly as they are into the Google Apps Script placeholders.\n\n## Common Issues\n\n**Problem**\n\n`Could not log in because of a FirebaseError: Firebase: Error (auth/configuration-not-found)` shows as an error in the console when trying to sign in with Google.\n\n**Solution**\n\nEnable Google Authentication inside Firebase, as instructed [above](#getting-started).\n\n**Problem**\n\n`Warning: initial exceeded maximum budget.` shows up when building/deploying.\n\n**Solution**\n\nScouting is currently a big application. You can safely ignore this warning.\n\n**Problem**\n\n`Error: src/app/services/the-blue-alliance.service.ts:4:21 - error TS2307: Cannot find module 'environments/secrets.json' or its corresponding type declarations.` shows up when building/deploying.\n\n**Solution**\n\nCreate a `secrets.json` file with the contents:\n\n```json\n{\n  \"TBAKey\": \"\u003cYour TheBlueAlliance Read v3 API Key without \u003c\u003e here\u003e\"\n}\n```\n\n**Problem**\n\n```\nError: Failed to create project. See firebase-debug.log for more info.\nnode:child_process:826\n    err = new Error(msg);\n```\n\nwhen running `npm run create` to set up a new Scouting instance.\n\n**Solution**\n\nYour Google Organization probably blocks creating Firebase projects. Run `firebase logout` and try signing in with a different Google account.\n\n## Frequently Asked Questions\n\n**How do you view submitted scout data?**\n\nA quick overview of invalid scouts (where the team number doesn't match the match teams from The Blue Alliance) and missing scouts (where the match has some scouts but not of all teams) appear in the Admin Panel.\n\nThe data is stored in Cloud Firestore, where each event creates its own collection (You may need to refresh after the first event scout).\n\nYou may also use our Google Sheets template linked [above](#dashboard).\n\n## Roadmap\n\nThe following things can greatly improve the quality of the application:\n\n- [ ] Add unit tests.\n- [ ] Reduce bundle size.\n- [ ] Simplify the Getting Started process.\n- [ ] Add more games.\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiscar%2Fscouting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiscar%2Fscouting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiscar%2Fscouting/lists"}