77bed5f17b
Migrate to pnpm |
||
---|---|---|
.github/workflows | ||
client | ||
.gitignore | ||
.mdlrc | ||
LICENSE | ||
README.md | ||
SECURITY.md |
Jankboard 2
A remastered version of the original Jankboard, with a focus on minimizing the Jank portion. Designed from the ground up to be easy to maintain and extend, unlike the original. The frontend is powered by Svelte 4 (unfortunately, we had to drop support for the bleeding edge Svelte 5 due to lack of Vite support). This project is closed source (for now) and licensed under a modified BSD 3.0 license.
Installation guide
We recommend installing the latest stable release binaries from our release page, if you're just looking to run the Jankboard. Alternatively, if you can't find release binaries for your system, follow the directions below in the For developers section to build it from source.
For developers
If you would like to contribute to Jankboard 2, there's only a few simple steps to get the development build up and running.
Prerequisites
- Rust and
cargo
. Check the Rust docs for more information. We recommend you install Rust usingrustup
. Keep in mind that this is ONLY necessary for development, release binaries do not require Rust. - NodeJS and
npm
, for installing dependencies and thevite
development server. - If you would like the install the (deprecated) Python backend, you will need to install the
poetry
package manager.
Installation steps
- Clone the repository. The
app
folder contains most of the (deprecated) Python code that powers the telemetry. Theclient
folder contains the code for the desktop app. Theclient/src-tauri
contains the Rust source code for the backend that interfaces with the robot via Network Tables. The python backend inapp
is currently being deprecated in favor of a Rust backend. If you need to run it for any reason, check the section below (Troubleshooting common issues). cd
into theclient
folder. The configuration files andpackage.json
, as well as project code for the desktop app are all stored here. To install dependencies, simply runnpm i
.- 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 runnpm run tauri dev
. This will install and build the Rust dependencies viacargo
and initialize thevite
development server for the frontend. Note that since this is basically just running thevite
development server and then connecting the Tauri webview to it, there may be slightly inconsistent behavior in dev mode versus production mode. - To create a production binary, run
npm run tauri build
. Tauri cross-compilation is still in beta, so you should generally try to build targeting the same OS you're currently running. Check the Tauri docs for more information.
Troubleshooting common issues
- If you're experiencing issues with TypeScript type checking or dependency resolution, try opening your editor directly in the
client
directory so it picks up thetsconfig.json
and uses the project's own TypeScript language server. - If you don't have access to a development environment that supports running standalone executables (eg. Github Codespaces), you can try running
npm run dev
instead ofnpm run tauri dev
, which will open a development server atlocalhost: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. - If for some reason you need to install and use the Python backend, run
poetry install --no-root
in the root directory of the project to install dependencies. You can start the server withpoetry run flask --app app/server.py run --host localhost --port 1280
(it must be running at port1280
for the frontend to detect it), and it only works when the frontend is running in development mode.
Current progress and improvements over (original) Jankboard
- Layout, toasts/notifications, music player, and app system ported.
- Toast and audio cue system is much more robust
- Transitions added almost everywhere to make things smoother
- Tauri app created successfully, currently still using Flask backend
- Visualization vastly improved with Threlte (Three.js) powered 3D robot simulation
- Robot model ported successfully via massive optimization through polygon decimation
- Added settings app with options to disable certain features and developer tools for testing
TODO
- Camera cutout overlay
- Overhaul audio player system
- Overhaul visualization (especially camera)
- Overhaul backend in Rust
- Further integrate telemetry (like GPWS, collision warning, etc)
- Finish re-creating / adding various voice alerts and sequences
- Create dynamic voice prompt system to support new languages very easily
- Add dynamic voice prompt fallback to support incremental voice prompt migration