RobotHub-Frontend / README.md
blanchon's picture
Update
6ce4ca6
|
raw
history blame
7.25 kB
metadata
title: LeRobot Arena Frontend
emoji: πŸ€–
colorFrom: blue
colorTo: purple
sdk: static
app_build_command: bun install && bun run build
app_file: build/index.html
pinned: false
license: mit
short_description: A web-based robotics control and simulation platform
tags:
  - robotics
  - control
  - simulation
  - svelte
  - static
  - frontend

πŸ€– LeRobot Arena

A web-based robotics control and simulation platform that bridges digital twins and physical robots. Built with Svelte for the frontend and FastAPI for the backend.

πŸš€ Simple Deployment Options

Here are the easiest ways to deploy this Svelte frontend:

πŸ† Option 1: Hugging Face Spaces (Static) - RECOMMENDED ✨

Automatic deployment (easiest):

  1. Fork this repository to your GitHub account
  2. Create a new Space on Hugging Face Spaces
  3. Connect your GitHub repo - it will auto-detect the static SDK
  4. Push to main branch - auto-builds and deploys!

The frontmatter is already configured with:

sdk: static
app_build_command: bun install && bun run build
app_file: build/index.html

Manual upload:

  1. Run bun install && bun run build locally
  2. Create a Space with "Static HTML" SDK
  3. Upload all files from build/ folder

πŸš€ Option 2: Vercel - One-Click Deploy

Deploy to Vercel

Settings: Build command bun run build, Output directory build

πŸ“ Option 3: Netlify - Drag & Drop

  1. Build locally: bun install && bun run build
  2. Drag build/ folder to Netlify

πŸ†“ Option 4: GitHub Pages

Add this workflow file (.github/workflows/deploy.yml):

name: Deploy to GitHub Pages
on:
  push:
    branches: [ main ]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: oven-sh/setup-bun@v1
      - run: bun install --frozen-lockfile
      - run: bun run build
      - uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./build

🐳 Option 5: Docker (Optional)

For local development or custom hosting:

docker build -t lerobot-arena-frontend .
docker run -p 7860:7860 lerobot-arena-frontend

The Docker setup uses Bun's simple static server - much simpler than the complex server.js approach!

πŸ› οΈ Development Setup

For local development with hot-reload capabilities:

Frontend Development

# Install dependencies
bun install

# Start the development server
bun run dev

# Or open in browser automatically
bun run dev -- --open

Backend Development

# Navigate to Python backend
cd src-python

# Install Python dependencies (using uv)
uv sync

# Or using pip
pip install -e .

# Start the backend server
python start_server.py

Building Standalone Executable

The backend can be packaged as a standalone executable using box-packager:

# Navigate to Python backend
cd src-python

# Install box-packager (if not already installed)
uv pip install box-packager

# Package the application
box package

# The executable will be in target/release/lerobot-arena-server
./target/release/lerobot-arena-server

Note: Requires Rust/Cargo to be installed for box-packager to work.

πŸ“‹ Project Structure

lerobot-arena/
β”œβ”€β”€ src/                    # Svelte frontend source
β”‚   β”œβ”€β”€ lib/               # Reusable components and utilities
β”‚   β”œβ”€β”€ routes/            # SvelteKit routes
β”‚   └── app.html           # App template
β”œβ”€β”€ src-python/            # Python backend
β”‚   β”œβ”€β”€ src/               # Python source code
β”‚   β”œβ”€β”€ start_server.py    # Server entry point
β”‚   β”œβ”€β”€ target/            # Box-packager build output (excluded from git)
β”‚   └── pyproject.toml     # Python dependencies
β”œβ”€β”€ static/                # Static assets
β”œβ”€β”€ Dockerfile             # Docker configuration
β”œβ”€β”€ docker-compose.yml     # Docker Compose setup
└── package.json           # Node.js dependencies

🐳 Docker Information

The Docker setup includes:

  • Multi-stage build: Optimized for production using Bun and uv
  • Automatic startup: Both services start together
  • Port mapping: Backend on 8080, Frontend on 7860 (HF Spaces compatible)
  • Static file serving: Compiled Svelte app served efficiently
  • User permissions: Properly configured for Hugging Face Spaces
  • Standalone executable: Backend packaged with box-packager for faster startup

For detailed Docker documentation, see DOCKER_README.md.

πŸ”§ Building for Production

Frontend Only

bun run build

Backend Standalone Executable

cd src-python
box package

Complete Docker Build

docker-compose up --build

🌐 What's Included

  • Real-time Robot Control: WebSocket-based communication
  • 3D Visualization: Three.js integration for robot visualization
  • URDF Support: Load and display robot models
  • Multi-robot Management: Control multiple robots simultaneously
  • WebSocket API: Real-time bidirectional communication
  • Standalone Distribution: Self-contained executable with box-packager

🚨 Troubleshooting

Port Conflicts

If ports 8080 or 7860 are already in use:

# Check what's using the ports
lsof -i :8080
lsof -i :7860

# Use different ports
docker run -p 8081:8080 -p 7861:7860 lerobot-arena

Container Issues

# View logs
docker-compose logs lerobot-arena

# Rebuild without cache
docker-compose build --no-cache
docker-compose up

Development Issues

# Clear node modules and reinstall
rm -rf node_modules
bun install

# Clear Svelte kit cache
rm -rf .svelte-kit
bun run dev

Box-packager Issues

# Clean build artifacts
cd src-python
box clean

# Rebuild executable
box package

# Install cargo if missing
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

πŸš€ Hugging Face Spaces Deployment

This project is configured for Static HTML deployment on Hugging Face Spaces (much simpler than Docker!):

Manual Upload (Easiest):

  1. Run bun install && bun run build locally
  2. Create a new Space with "Static HTML" SDK
  3. Upload all files from build/ folder
  4. Your app is live!

GitHub Integration:

  1. Fork this repository
  2. Create a Space and connect your GitHub repo
  3. The Static HTML SDK will be auto-detected from the README frontmatter
  4. Push changes to auto-deploy

No Docker, no complex setup - just static files! πŸŽ‰

πŸ“š Additional Documentation

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test with Docker: docker-compose up --build
  5. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License.


Built with ❀️ for the robotics community πŸ€–