ADJ Valet is a web-based configuration management tool designed for the Hyperloop Control Station's ADJ (Automatic Data Junction). It provides an intuitive interface for managing board configurations, network packets, and measurement parameters critical to Hyperloop pod operations.
- ποΈ Board Management: Configure board IDs, IP addresses, and associated parameters
- π¦ Packet Configuration: Define and manage network packet structures
- π Measurement Setup: Configure measurement parameters with safety thresholds
- πΎ File-Based Storage: Maintains configuration in organized JSON file structures
- π Real-time Updates: Live synchronization between UI and file system
-
Download the latest release for your platform from Releases
- Windows (Intel/AMD):
adj-valet-x86_64-pc-windows-msvc.zip - Windows (ARM):
adj-valet-aarch64-pc-windows-msvc.zip - macOS (Intel):
adj-valet-x86_64-apple-darwin.tar.gz - macOS (Apple Silicon):
adj-valet-aarch64-apple-darwin.tar.gz - Linux:
adj-valet-x86_64-unknown-linux-gnu.tar.gz
- Windows (Intel/AMD):
-
Extract the archive
-
Run the startup script:
- Windows: Double-click
start.bat - macOS/Linux: Double-click
start.shor run./start.sh
- Windows: Double-click
# Clone the repository
git clone https://github.com/HyperloopUPV-H8/adj-valet.git
cd adj-valet
# Start the application
./run.sh
# Or run specific components
./run.sh backend # Backend only
./run.sh frontend # Frontend only# Enter the Nix development shell
nix-shell
# Run the full application
adj-valet
# Or run components separately
adj-backend # Backend service only
adj-frontend # Frontend application only- Rust 1.70 or higher
- Node.js 18 or higher
- npm 8 or higher
-
Clone the repository
git clone https://github.com/HyperloopUPV-H8/adj-valet.git cd adj-valet -
Build backend (Rust)
cd backend cargo build --release cd ..
-
Install frontend dependencies
cd adj-valet-front npm install cd ..
-
Start the services
# Terminal 1 - Backend cd backend cargo run -- --port 8000 # Terminal 2 - Frontend cd adj-valet-front npm run dev
./run.sh # Start full application
./run.sh backend # Start backend only
./run.sh frontend # Start frontend only
./run.sh install # Install all dependencies
./run.sh help # Show help informationnix-shell # Enter development environment
adj-valet # Run full application
adj-backend # Run backend service
adj-frontend # Run frontend application
format-python # Format Python code with Black
lint-python # Lint Python code with Pylintadj-valet/
βββ backend/ # Rust backend service (Axum)
β βββ src/
β β βββ main.rs # Main application and API endpoints
β β βββ config.rs # Configuration management
β β βββ error.rs # Error handling
β βββ Cargo.toml # Rust dependencies
βββ adj-valet-front/ # React frontend application
β βββ src/
β β βββ components/ # React components
β β βββ store/ # Zustand state management
β β βββ types/ # TypeScript type definitions
β β βββ api/ # API client
β βββ package.json
βββ run.sh # Application runner script
βββ shell.nix # Nix development environment
βββ CLAUDE.md # AI assistant documentation
POST /path- Set the ADJ directory pathGET /assemble- Retrieve assembled configurationPOST /update- Update configuration changes
The application provides a single-page interface with:
- General Information management
- Board configuration panels
- Packet and measurement editors
The application creates a .env file with default values:
BACKEND_HOST=0.0.0.0
BACKEND_PORT=8000
FRONTEND_PORT=5173The application expects an ADJ directory with the following structure:
your-adj-directory/
βββ general_info.json
βββ boards.json
βββ boards/
βββ BoardA/
β βββ BoardA.json
β βββ measurements.json
β βββ packets/
β βββ order_0.json
β βββ order_1.json
βββ BoardB/
βββ ...
-
Start the application using one of the methods above
-
Enter your ADJ directory path when prompted
-
Navigate through sections:
- General Info: View and edit general configuration
- Boards: Manage board configurations
- Packets: Define packet structures
- Measurements: Configure measurement parameters
-
Save changes using the save button in the sidebar
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow PEP 8 for Python code
- Use ESLint configuration for TypeScript/React
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
-
Backend connection errors
- Ensure the backend is running on port 8000
- Check that no other service is using the port
-
Frontend build errors
- Clear
node_modulesand reinstall:rm -rf node_modules && npm install - Ensure Node.js version is 18 or higher
- Clear
-
File permission errors
- Ensure the ADJ directory has write permissions
- Check that all JSON files are properly formatted
This project is part of the Hyperloop UPV project. For licensing information, please contact the team.
For issues and questions:
- Open an issue on GitHub
- Contact the Hyperloop UPV team