Aplicación web para explorar Autodesk Docs/ACC y OSS, traducir modelos RVT/NWC con APS Model Derivative y consultar propiedades/metadata con una UX orientada a extracción técnica.
- OAuth 3-legged para Autodesk Docs/ACC (
/auth/login,/callback). - Flujo OSS directo (crear/listar/eliminar bucket, subir objeto, extraer por URN OSS).
- Modo demo público opcional sin login (
/api/demo/extract) con límites y CAPTCHA. - Extracción inteligente: manifest listo, traducción en curso, o encolado de job (
svf2con fallback asvf). - Panel de propiedades y analítica en frontend (categorías, tipos, métricas agregadas).
- Docker para entorno local y para despliegue tipo producción.
frontend (React, puerto 3001 dev)
|
| REST + cookie de sesión
v
backend (Express, puerto 3000)
|
+--> APS Authentication (3-legged + 2-legged)
+--> APS Data Management (hubs/proyectos/contenidos)
+--> APS OSS (buckets/objetos/signed S3 upload)
+--> APS Model Derivative (manifest, job, metadata, properties, tree)
aps-revit-data-extractor/
├── backend/
│ ├── server.js
│ ├── demoProtection.js
│ ├── data/demo-usage.json
│ ├── env.example
│ └── package.json
├── frontend/
│ ├── src/App.jsx
│ ├── src/App.css
│ ├── public/oauth-redirect.html
│ ├── public/oauth-popup-close.html
│ ├── env.example
│ └── package.json
├── docker-compose.yml
├── docker-compose.prod.yml
└── README.md
- Node.js 18+ recomendado
- npm 9+ recomendado
- Cuenta APS con app registrada
- Docker Desktop (opcional)
- Crea una app en APS.
- Copia
Client IDyClient Secret. - Configura callback:
http://localhost:3000/callback(local)
Crear desde plantilla:
cp backend/env.example backend/.envVariables clave:
APS_CLIENT_ID,APS_CLIENT_SECRETCALLBACK_URL(default local:http://localhost:3000/callback)FRONTEND_URL(default local:http://localhost:3001)FRONTEND_URLS(CORS permitido, lista separada por coma)SESSION_SECRETDEMO_URN_BASE64(opcional, habilita modo demo)DEMO_CAPTCHA_*(opcional, endurecimiento demo)
Crear desde plantilla:
cp frontend/env.example frontend/.envVariables clave:
REACT_APP_BACKEND_ORIGIN=http://localhost:3000REACT_APP_API_URL=http://localhost:3000/apiREACT_APP_DEMO_CAPTCHA_SITE_KEY=(si aplica)
Terminal 1:
cd backend
npm install
npm run devTerminal 2:
cd frontend
npm install
npm startURLs:
- Frontend:
http://localhost:3001 - Backend:
http://localhost:3000 - Health:
http://localhost:3000/health
docker compose up --builddocker compose -f docker-compose.prod.yml up --buildNotas:
docker-compose.prod.ymllevantabackendyfrontend.- En Coolify, publica
frontendybackendcomo servicios separados (un dominio para cada uno).
- Login OAuth.
- Navega
Hubs -> Projects -> Contents. - Selecciona item RVT/NWC.
- Ejecuta extracción (
/api/docs/extract).
- Crea o elige bucket.
- Sube archivo RVT/NWC (
/api/oss/buckets/:bucketKey/upload). - Ejecuta extracción (
/api/oss/extract).
- Configura
DEMO_URN_BASE64. - Activa opcionalmente CAPTCHA/rate limit.
- Consumir extracción demo (
/api/demo/extract).
GET /auth/loginGET /callbackGET /logoutGET /api/statusGET /api/user-profile
GET /api/hubsGET /api/hubs/:hubId/projectsGET /api/hubs/:hubId/projects/:projectId/contentsPOST /api/docs/extract
POST /api/oss/bucketsGET /api/oss/bucketsDELETE /api/oss/buckets/:bucketKeyGET /api/oss/buckets/:bucketKey/objectsDELETE /api/oss/buckets/:bucketKey/objects?objectKey=...POST /api/oss/buckets/:bucketKey/uploadPOST /api/oss/extract
POST /api/translateGET /api/metadata/:urnBase64GET /api/properties/:urnBase64/:guidGET /api/tree/:urnBase64/:guid
POST /api/demo/extract
Comandos útiles:
# backend
cd backend
node --check server.js
node --check demoProtection.js
# frontend
cd frontend
npm run buildNot authenticated: sesión expirada o cookie bloqueada por navegador.Callback mismatch:CALLBACK_URLno coincide con APS app config.no_propertiesen Model Derivative: vista sin property DB, probar reproceso forzado.- Error CORS: revisar
FRONTEND_URL(backend) yREACT_APP_API_URL(frontend). - En producción (Coolify): usa
CALLBACK_URL=https://aps-data-api.arqfi.com/callback,FRONTEND_URL=https://aps-data.arqfi.com,FRONTEND_URLS=https://aps-data.arqfi.com,REACT_APP_BACKEND_ORIGIN=https://aps-data-api.arqfi.com,REACT_APP_API_URL=https://aps-data-api.arqfi.com/api. - Demo no visible: falta
DEMO_URN_BASE64oDEMO_PUBLIC_ENABLED=false.
- Nunca subir
backend/.envnifrontend/.env. - Mantener
SESSION_SECRETfuerte en producción. - Usar límites de rate/captcha para demo pública.
MIT.