init code for the trainer app

This commit is contained in:
Cipher Vance
2026-01-25 09:56:41 -06:00
parent b29d7481e7
commit 9eab5ed98b
47 changed files with 13572 additions and 25 deletions

View File

@@ -1,38 +1,73 @@
# RideAware Trainer Application
# React + TypeScript + Vite
**Status: Work in Progress**
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
This README provides a brief overview of the RideAware Trainer Application. Please note that this project is currently under active development, and the information provided below is subject to change. This document will be updated with more detailed information as the application progresses.
Currently, two official plugins are available:
## Overview
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
The RideAware Trainer Application serves as a streamlined and immediate access point for users to engage with their planned workouts. Users will have the option to either select a pre-defined workout or load their specific plan from the day
## React Compiler
A key feature of the RideAware Trainer Application is its seamless integration with the RideAware Calendar. Users will be able to launch the Trainer Application directly from the Calendar when selecting the workout they want to do for that day, automatically loading the training planned for that day.
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
**Important:** All training plans are created and managed within the core RideAware platform. The Trainer Application serves solely as a streamlined way for users to load the day's RideAware calendar workout or select from a subset of training plans
## Expanding the ESLint configuration
## Features (Planned)
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
The following features are planned for future releases of the RideAware Trainer Application:
```js
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
* **Launch from RideAware Calendar:** Load your RideAware calendar workout for the day or select from a subset of training plans
// Remove tseslint.configs.recommended and replace with this
tseslint.configs.recommendedTypeChecked,
// Alternatively, use this for stricter rules
tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
tseslint.configs.stylisticTypeChecked,
## Getting Started (Not Yet Available)
// Other configs...
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```
Instructions for setting up and running the application will be provided in a future update.
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
## Contributing (Not Yet Available)
Details on how to contribute to the project will be shared in a future update.
## License
[License information will be added soon]
## Contact
For inquiries, please contact blake@rideaware.org.
**Stay tuned for more updates!**
```js
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default defineConfig([
globalIgnores(['dist']),
{
files: ['**/*.{ts,tsx}'],
extends: [
// Other configs...
// Enable lint rules for React
reactX.configs['recommended-typescript'],
// Enable lint rules for React DOM
reactDom.configs.recommended,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
// other options...
},
},
])
```