Proyecto de digitalización de documentos con OCR integrado. Monorepo con backend NestJS y frontend Next.js.
DocScan soporta dos fuentes de imagen:
- Cámara del navegador (
POST /api/scanner/capture): el frontend captura desde WebRTC/WebUSB y envía base64 al backend. - Escáner de red vía eSCL/AirScan (
POST /api/scanner/network-scan): el backend habla HTTP directo con el escáner por IP, sin agentes intermedios.
Los escáneres se administran como ScannerConfig (CRUD en /api/scanner/configs) con ping a /eSCL/ScannerStatus.
Más detalle en
docs/scanner-flow.mdydocs/architecture-project.md.
| Capa | Tecnología |
|---|---|
| Backend | NestJS + TypeScript |
| Frontend | Next.js (App Router) + React |
| OCR / IA | Google Gemini / LM Studio |
| Almacenamiento | Bunny CDN + Sharp |
| Escáner de red | eSCL / AirScan (HTTP nativo) |
| Base de datos | PostgreSQL + Prisma |
| Estado global | Zustand |
- Node.js 18+
- Docker y Docker Compose
- PostgreSQL (vía docker-compose)
- Cuenta Bunny CDN (si querés almacenamiento remoto)
- API key de Gemini o instancia de LM Studio
- Para escaneo de red: dispositivo compatible con AirScan/eSCL accesible por IP desde el backend
npm run install:allcp backend/.env.example backend/.envEditar backend/.env con tus valores. Mínimo requerido:
DATABASE_URLJWT_SECRETBUNNY_STORAGE_ZONEBUNNY_STORAGE_ACCESS_KEYBUNNY_STORAGE_HOSTBUNNY_CDN_BASE_URLGEMINI_API_KEY(o configuración de LM Studio)
docker-compose up -d postgrescd backend
npx prisma db push
npx prisma generatenpm run dev:backend
npm run dev:frontend- Frontend:
http://localhost:3000 - Backend API:
http://localhost:3001/api - Health:
http://localhost:3001/api/health
MIT