{"id":21977829,"url":"https://github.com/oakvilledynamics/frc-robot-template","last_synced_at":"2026-05-17T01:41:32.820Z","repository":{"id":66282712,"uuid":"592157272","full_name":"OakvilleDynamics/frc-robot-template","owner":"OakvilleDynamics","description":"FRC Robot Template - Java - Command Robot","archived":false,"fork":false,"pushed_at":"2025-06-05T14:55:43.000Z","size":337,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-06-05T15:44:14.961Z","etag":null,"topics":["frc","frc-java","frc-robot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OakvilleDynamics.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,"zenodo":null}},"created_at":"2023-01-23T04:02:18.000Z","updated_at":"2025-06-05T14:55:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"e0ea901e-4211-43e0-b915-d92c465207a4","html_url":"https://github.com/OakvilleDynamics/frc-robot-template","commit_stats":null,"previous_names":[],"tags_count":11,"template":true,"template_full_name":null,"purl":"pkg:github/OakvilleDynamics/frc-robot-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OakvilleDynamics%2Ffrc-robot-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OakvilleDynamics%2Ffrc-robot-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OakvilleDynamics%2Ffrc-robot-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OakvilleDynamics%2Ffrc-robot-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OakvilleDynamics","download_url":"https://codeload.github.com/OakvilleDynamics/frc-robot-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OakvilleDynamics%2Ffrc-robot-template/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266052535,"owners_count":23869473,"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":["frc","frc-java","frc-robot"],"created_at":"2024-11-29T16:16:35.209Z","updated_at":"2026-05-17T01:41:32.813Z","avatar_url":"https://github.com/OakvilleDynamics.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Oakville Dynamics FRC Robot Template\n\nA template for FRC robots using GradleRIO and WPILib\n\nPrepackaged with GitHub Actions for CI/CD, Qodana for static analysis, CodeQL for static analysis and security scanning, Spotless for code formatting, and Gradle Validation for validating the Gradle wrapper\n\n## Build Status\n\n| Action   | Status                                                                                                                                                                                                            |\n| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| CI       | [![Build](https://github.com/OakvilleDynamics/frc-robot-template/actions/workflows/ci.yml/badge.svg)](https://github.com/OakvilleDynamics/frc-robot-template/actions/workflows/ci.yml)                            |\n| Qodana   | [![Qodana](https://github.com/OakvilleDynamics/frc-robot-template/actions/workflows/qodana.yml/badge.svg)](https://github.com/OakvilleDynamics/frc-robot-template/actions/workflows/qodana.yml)                   |\n| CodeQL   | [![CodeQL Scanning](https://github.com/OakvilleDynamics/frc-robot-template/actions/workflows/codeql.yml/badge.svg)](https://github.com/OakvilleDynamics/frc-robot-template/actions/workflows/codeql.yml)          |\n| Spotless | [![Syntax Check](https://github.com/OakvilleDynamics/frc-robot-template/actions/workflows/syntax-check.yml/badge.svg)](https://github.com/OakvilleDynamics/frc-robot-template/actions/workflows/syntax-check.yml) |\n\n## How to use\n\n1. Create a template of this repository\n2. Follow GitHub prompts for creating a repository\n3. Clone newly created repository\n4. Open the project in your WPILib Visual Studio Code (VS Code) after cloning\n5. Start hacking away!\n\n\u003e [!NOTE]\n\u003e\n\u003e You should also change the `README.md` file to reflect your project for build statuses and other badges, otherwise the CI jobs listed here will point to the template\n\u003e\n\u003e Include other changes that are made to help users understand your project\n\n## Features\n\n- Preconfigured setup for GitHub Actions (helpful for [CI/CD](https://en.wikipedia.org/wiki/CI/CD))\n  - Build action for building the robot code (helpful for ensuring code compiles)\n  - Unit testing for ensuring your code does function as intended\n  - [JetBrains Qodana](https://www.jetbrains.com/qodana/) action for static analysis (helpful for finding bugs and code smells)\n  - [CodeQL](https://codeql.github.com/) action for static analysis and security scanning (helpful for finding bugs and security vulnerabilities)\n  - [Spotless](https://github.com/diffplug/spotless) enforcement action for code formatting (helpful for keeping code cleanly formatted after commits)\n  - [Gradle Validation](https://github.com/gradle/actions/blob/main/docs/wrapper-validation.md) action for validating the Gradle wrapper (helpful for ensuring [supply chain](https://en.wikipedia.org/wiki/Supply_chain_attack) security)\n- Preconfigured setup for [Command-Based Robot](https://docs.wpilib.org/en/stable/docs/software/commandbased/index.html) projects (helpful for getting started)\n- [Dependabot](https://docs.github.com/en/code-security/dependabot) for dependency updates (helpful for keeping dependencies up to date)\n- Preconfigured setup for [Spotless](https://github.com/diffplug/spotless) inside of Gradle (helpful for keeping code cleanly formatted during development)\n  - Automatic formatting on every Gradle build is enabled by default\n  - A syntax check if formatting was not applied locally will be performed on every push to `main`, including pull requests into `main`\n\n## Requirements\n\n\u003e [!CAUTION]\n\u003e\n\u003e **Syntax Check**\n\u003e\n\u003e In the [`.github/workflows/syntax-check.yml`](.github/workflows/syntax-check.yml) workflow file, there is a [secret](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions) that is used for automatically push changes from a GitHub Actions run, as by default the Actions runner itself does not have permission to push back to the repository. [This is intended behavior for security reasons under the normal `GITHUB_TOKEN` permission set](https://github.com/orgs/community/discussions/25702). To fix this, either:\n\u003e\n\u003e - Create a new [personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) to [scope the repository](https://docs.github.com/en/codespaces/managing-codespaces-for-your-organization/managing-development-environment-secrets-for-your-repository-or-organization#adding-secrets-for-a-repository) itself\n\u003e - Create a new [personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) to [scope the organization](https://docs.github.com/en/codespaces/managing-codespaces-for-your-organization/managing-development-environment-secrets-for-your-repository-or-organization#adding-secrets-for-an-organization) to be used elsewhere (helpful if using this template on multiple different projects)\n\u003e\n\u003e If using a PAT in an organization, it is recommended to create a sock account that is generic but still has access to push to the repository, as this will be given [least privilege](https://en.wikipedia.org/wiki/Principle_of_least_privilege) to do other harm if that PAT were to be inadvertently public\n\u003e\n\u003e Make sure you also grant the sock account proper access to the repository, that includes branch protections and write access to the repository\n\u003e\n\u003e **JetBrains Qodana**\n\u003e\n\u003e In the [`.github/workflows/qodana.yml`](.github/workflows/qodana.yml) workflow file, there is a [secret](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions) that is used to communicate to JetBrains Qodana Cloud. [This is required to be used with the workflow](https://www.jetbrains.com/help/qodana/github.html#Usage) as Qodana Cloud tracks all issues from all workflow runs for historical data. When left blank, the workflow will fail regardless of any issues. To fix this, either:\n\u003e\n\u003e - Create a new secret to [scope the repository](https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository) for that project only\n\u003e - [Delete or disable the workflow](https://docs.github.com/en/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/disabling-and-enabling-a-workflow#disabling-a-workflow) entirely to prevent CI failures.\n\u003e\n\u003e This means any time you create a repository from this template, you need to create a new project in Qodana Cloud and add the secret scoped to the repository.\n\n- WPILib 2026.2.1\n- Internet connection (for Gradle to download dependencies)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foakvilledynamics%2Ffrc-robot-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foakvilledynamics%2Ffrc-robot-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foakvilledynamics%2Ffrc-robot-template/lists"}