Crux is a comprehensive climbing analysis platform. It uses Computer Vision (Pose Estimation) to analyze climbing ascents, score performance, and track progress.
The platform consists of the following containerized services:
- Frontend: React (Vite + TypeScript + Tailwind)
- Backend: Python (FastAPI + SQLAlchemy + AsyncPG)
- Worker: Python (ARQ + Redis) for background video processing
- Database: PostgreSQL
- Storage: MinIO (S3-compatible object storage)
- Infrastructure: Nginx (Reverse Proxy)
The entire stack is containerized. You only need Docker to run the application.
- Docker Desktop installed and running.
Copy the example environment file to create your local configuration:
cp .env.example .envRun the following command to build and start all services:
docker-compose up --build -d
Once running, the services are accessible at:
| Service | URL | Description |
|---|---|---|
| Web App | http://localhost:5173 | Frontend Dev Server (Hot Reload) |
| API | http://localhost:8000 | Backend API |
| API Docs | http://localhost:8000/docs | Swagger UI |
| MinIO | http://localhost:9001 | S3 Console (User/Pass in .env) |
| Proxy | http://localhost | Nginx (Simulates Production Routing) |
To stop containers:
docker-compose down
To stop and destroy database/storage volumes (reset data):
docker-compose down -v
backend/- FastAPI application, database models, and CV logic.frontend/- React application.nginx/- Reverse proxy configuration.