salirezav 70f614e9ff Enhance video streaming capabilities and UI integration
- Added support for streaming video files with proper MIME type handling in the media API.
- Implemented transcoding functionality for H.264 compatibility on-the-fly using FFmpeg.
- Updated VideoModal component to utilize Video.js for improved video playback experience.
- Enhanced user interface with download options and better error handling for video playback.
- Updated package.json and package-lock.json to include new dependencies for video.js and related types.
2025-10-31 18:29:05 -04:00

USDA Vision

A unified monorepo combining the camera API service and the web dashboard for USDA vision experiments.

Project Structure

  • camera-management-api/ - Python API service for camera management (USDA-Vision-Cameras)
  • management-dashboard-web-app/ - React web dashboard for experiment management (pecan_experiments)

Quick Start

Production Mode (Docker Compose)

  1. Copy env template and set values (for web/Supabase):
cp .env.example .env
# set VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY in .env
  1. Start the stack:
docker compose up --build

To stop: docker compose down

For development with live logging, debugging, and hot reloading:

  1. Copy env template and set values (for web/Supabase):
cp .env.example .env
# set VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY in .env
  1. Start the development environment:
./dev-start.sh

This will:

  • Start containers with debug logging enabled
  • Enable hot reloading for both API and web services
  • Show all logs in real-time
  • Keep containers running for debugging

Development URLs:

Development Commands:

  • ./dev-start.sh - Start development environment
  • ./dev-stop.sh - Stop development environment
  • ./dev-logs.sh - View logs (use -f to follow, -t N for last N lines)
  • ./dev-logs.sh -f api - Follow API logs only
  • ./dev-logs.sh -f web - Follow web logs only
  • ./dev-shell.sh - Open shell in API container
  • ./dev-shell.sh web - Open shell in web container

Debug Features:

  • API runs with --debug --verbose flags for maximum logging
  • Web runs with Vite dev server for hot reloading
  • All containers have stdin_open: true and tty: true for debugging
  • Environment variables set for development mode

Services

API Service (Port 8000)

  • Camera management endpoints
  • Video recording controls
  • File management

Web Dashboard (Port 5173)

  • User authentication via Supabase
  • Experiment definition and management
  • Camera control interface
  • Video playback and analysis

MQTT Broker (Port 1883)

  • Local Mosquitto broker for development and integration testing

Git Subtree Workflow

This repo vendors two upstream projects using git subtree, preserving their histories under camera-management-api/ and management-dashboard-web-app/.

Configured remotes:

Pull latest upstream changes into subtrees:

# API (USDA-Vision-Cameras)
git subtree pull --prefix=camera-management-api cameras master

# Web (pecan_experiments)
git subtree pull --prefix=management-dashboard-web-app web-origin master

Push your changes back upstream (optional):

# API (push changes made under camera-management-api/ back to USDA-Vision-Cameras)
git subtree push --prefix=camera-management-api cameras master

# Web (push changes made under management-dashboard-web-app/ back to pecan_experiments)
git subtree push --prefix=management-dashboard-web-app web-origin master

Notes:

  • Subtrees keep a single working copy with full history; no submodule init/update required.
  • If you prefer a lighter top-level history, you can use --squash when adding/pulling, but pushing back becomes trickier.

Development Tips

  • API

    • Code lives under camera-management-api/. The compose service runs the full system via python main.py --config config.compose.json.
    • Camera SDK access from inside Docker on Windows may be limited; for hardware work you might run the API directly on the host.
    • Configuration: camera-management-api/config.json (see camera-management-api/docs for details).
    • Storage (recordings) is mapped to camera-management-api/storage/ and ignored by git.
  • Web

    • Code lives under management-dashboard-web-app/ with a Vite dev server on port 5173.
    • Environment: set VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY in .env (not committed).
    • Common scripts: npm run dev, npm run build (executed inside the container by compose).

Troubleshooting

  • Port already in use: change the mapped ports in docker-compose.yml or stop the conflicting process.
  • File watching issues on Docker Desktop: CHOKIDAR_USEPOLLING=true is already set for the web container.
  • API not starting: check container logs and verify Python deps (compose installs from requirements.txt or pyproject.toml).
Description
No description provided
Readme 60 MiB
Languages
TypeScript 46.9%
Python 36.6%
PLpgSQL 6.3%
Jupyter Notebook 4.6%
Shell 2.4%
Other 3.1%