Compare commits

..

No commits in common. "main" and "open-source" have entirely different histories.

View file

@ -1,6 +1,6 @@
# Jankboard # Jankboard
![build](https://github.com/youwen5/jankboard/actions/workflows/main.yml/badge.svg) ![build](https://github.com/couscousdude/jankboard/actions/workflows/main.yml/badge.svg)
[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation) [![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)
This repository hosts the last version of the source code for the Jankboard This repository hosts the last version of the source code for the Jankboard
@ -17,9 +17,9 @@ vary by year.
Though this is a Team 1280 project, it's hosted on my GitHub account as I wrote Though this is a Team 1280 project, it's hosted on my GitHub account as I wrote
the vast majority of the code and retain rights to it via the the vast majority of the code and retain rights to it via the
[license](./LICENSE). A small portion of this codebase was contributed by [license](./LICENSE). A small portion of this codebase was contributed by
[@quantum9innovation](https://github.com/quantum9Innovation/). I've released it @quantum9innovation. I've released it as free and open source software under the
as free and open source software under the GPL v3, as permitted by Team 1280's GPL v3, as permitted by Team 1280's policies for post-competition software
policies for post-competition software stewardship. stewardship.
The Jankboard is a fully functional control interface designed to be used with The Jankboard is a fully functional control interface designed to be used with
our 2024 robot. It is intended to work alongside the FRC Game Tools application, our 2024 robot. It is intended to work alongside the FRC Game Tools application,
@ -66,7 +66,6 @@ rapidly build the application during our 6-week development period.
- [For developers](#for-developers) - [For developers](#for-developers)
- [Prerequisites](#prerequisites) - [Prerequisites](#prerequisites)
- [Installation steps](#installation-steps) - [Installation steps](#installation-steps)
- [Some notes:](#some-notes)
- [Troubleshooting common issues](#troubleshooting-common-issues) - [Troubleshooting common issues](#troubleshooting-common-issues)
- [Licensing](#licensing) - [Licensing](#licensing)
<!--toc:end--> <!--toc:end-->
@ -99,44 +98,45 @@ frontend and backend, which have been improved in almost every possible way.
## For developers ## For developers
If you would like to contribute to Jankboard, there's only a few simple steps to If you would like to contribute to Jankboard, there's only a few simple steps to
get the development build up and running. Please keep in mind that the following get the development build up and running.
is only necessary if you are building from source; the binaries have no external
dependencies.
### Prerequisites ### Prerequisites
- Rust and `cargo`. Check the [Rust docs](https://www.rust-lang.org/learn) for - Rust and `cargo`. Check the [Rust docs](https://www.rust-lang.org/learn) for
more information. more information. We recommend you install Rust using `rustup`. Keep in mind
that this is ONLY necessary for development, release binaries do not require
Rust.
- `pnpm`, for installing dependencies and the `vite` development server. - `pnpm`, for installing dependencies and the `vite` development server.
- NodeJS - NodeJS
### Installation steps ### Installation steps
1. Clone the repository using your preferred method. 1. Clone the repository. The `client` directory contains the vast majority of
2. Enter the `client` directory. This is where the majority of the app's source the source code for the desktop app, while the `splash-screen` directory
code lives. contains the source code for the splash screen displayed before the app
3. Run `pnpm install` to download all required NPM dependencies. loads. You don't have to touch anything in `splash-screen` unless you want to
4. To create a production build, run `pnpm tauri build`. This will use Cargo to modify it, in which case check the README in `splash-screen` for more
fetch and build all the Rust dependencies, then compile the app and output an
executable for your platform in `target`.
5. To launch a developer build with hot reloading and convenient debugging
features, run `pnpm tauri dev`.
#### Some notes:
- The `client` directory contains the vast majority of the source code for the
desktop app, while the `splash-screen` directory contains the source code for
the splash screen displayed before the app loads. You don't have to touch
anything in `splash-screen` unless you want to modify it, in which case check
the [README](./splash-screen/README.md) in `splash-screen` for more
information. information.
2. `cd` into the `client` folder. The configuration files and `package.json`,
- Tauri cross-compilation is still in beta, so you should build targeting the This is where stuff like `package.json` and configuration files for our
same OS you're currently running. For example, create Windows builds from various tooling are housed. The `client/src-tauri` directory contains the
Windows. Check [the Tauri docs](https://tauri.app/v1/guides/building/) for Rust source code and `cargo` configuration files for the backend that
more information. We also have some Github Actions set up to automatically interfaces with the robot via Network Tables.
compile a production build for all platforms, but this is expensive (uses over 3. Run `pnpm install` to install dependencies.
30 minutes of our quota), and should only be used for publishing new major 4. To run the desktop app in developer mode (with automatic hot stateful reload
and other useful features like error reporting), make sure you're in the
`client` directory and run `pnpm run tauri dev`. This will install and build
the Rust dependencies via `cargo` and initialize the `vite` development
server for the frontend. Note that since this is basically just running the
`vite` development server and then connecting the Tauri webview to it, there
may be slightly inconsistent behavior in dev mode versus production mode.
5. To create a production binary, run `pnpm run tauri build`. Tauri
cross-compilation is still in beta, so you should build targeting the same OS
you're currently running. For example, create Windows builds from Windows.
Check [the Tauri docs](https://tauri.app/v1/guides/building/) for more
information. We also have some Github Actions set up to automatically compile
a production build for all platforms, but this is expensive (uses over 30
minutes of our quota), and should only be used for publishing new major
releases. releases.
## Troubleshooting common issues ## Troubleshooting common issues
@ -145,10 +145,16 @@ dependencies.
resolution, try opening your editor directly in the `client` directory so it resolution, try opening your editor directly in the `client` directory so it
picks up the `tsconfig.json` and uses the project's own TypeScript language picks up the `tsconfig.json` and uses the project's own TypeScript language
server. server.
- If you don't have access to a development environment that supports running
standalone executables (eg. Github Codespaces), you can try running
`pnpm run dev` instead of `pnpm run tauri dev`, which will open a development
server at `localhost:5173` with the frontend running in the web. However, app
behavior may be inconsistent and you will not get any features from the Rust
backend.
## Licensing ## Licensing
This project is released as free software under the terms of the This project is released as free software under the
[GNU General Public License](./LICENSE). What that entails for a developer [GNU General Public License](./LICENSE). What that entails for a developer
seeking to use portions of this codebase, or even the entirety of the codebase, seeking to use portions of this codebase, or even the entirety of the codebase,
for their own purposes, is the following: for their own purposes, is the following: