Sistema de armazenamento de arquivos com autenticação, organização por pastas, lixeira, compartilhamento público, criptografia obrigatória no backend, uma camada assíncrona de IA para indexação semântica e auto-tagging de imagens, além de integrações por API Keys e agentes locais para máquinas.
- Frontend: React + Vite
- Backend: FastAPI (assíncrono)
- Banco: MongoDB (Motor)
- Storage: MinIO (S3 compatível)
- Fila assíncrona: Celery + Redis
- IA (RAG/Visão): SentenceTransformers + CLIP
- Integrações: API Keys e agentes locais por WebSocket
- Infra local: Docker Compose
Windows:
setup-local.batLinux/macOS:
./setup-local.shAmbiente principal:
docker compose up --buildAmbiente de desenvolvimento (Mongo + MinIO + Redis):
docker compose -f docker-compose.dev.yml up -dBackend API:
cd backend
uvicorn app.main:app --reloadWorker Celery (obrigatório para RAG e tags):
Windows (recomendado):
cd backend
celery -A app.celery_app worker --loglevel=info --pool=soloLinux/macOS:
cd backend
celery -A app.celery_app worker --loglevel=infoFrontend:
cd frontend
npm install
npm run dev- Frontend: http://localhost:5173
- Backend docs: http://localhost:8000/docs
- MinIO API: http://localhost:9000
- MinIO Console: http://localhost:9001
- Redis: localhost:6379
- Autenticação com JWT
- Gestão de pastas e arquivos
- Upload com barra de progresso
- Lixeira (soft delete) com limpeza automática após 30 dias
- Compartilhamento por link público com expiração opcional e senha opcional
- Criptografia obrigatória no backend antes de persistir no MinIO (AES-GCM)
- Download e preview com decriptação transparente no backend
- Busca semântica de documentos (RAG)
- Auto-tagging de imagens com score de confiança
- Processamento assíncrono de documentos e imagens via Celery
- API Keys para integração externa por header
X-API-Key - Cadastro e gestão de máquinas/agentes locais com WebSocket
- Navegação remota de diretórios na UI de máquinas
- Upload do arquivo
- Extração de texto (PDF/TXT/DOCX)
- Geração de embedding
- Persistência em
text_embeddingeextracted_text - Busca semântica por
POST /api/v1/search/semantic
- Upload da imagem
- Classificação com CLIP
- Persistência de tags e confiança no arquivo
- Exibição de badges na interface
- Usuário cria uma chave na interface de integrações.
- O backend armazena apenas o hash da chave e metadados da emissão.
- A autenticação passa a aceitar
X-API-Keyalém de JWT. - A chave pode expirar ou ser revogada a qualquer momento.
- Usuário cria uma máquina e recebe um token único.
- O backend gera um script Python de instalação do agente.
- O agente conecta ao backend por WebSocket usando
machine_id+ token. - A UI envia comandos para a máquina conectada e recebe resposta por
request_id. - O modal de navegação permite abrir pastas e explorar subdiretórios remotamente.
- MongoDB local não suporta
$searchdo Atlas. - O backend faz fallback automático para busca semântica local por similaridade de embeddings.
- O endpoint continua funcionando com
200 OKquando o fallback entra em ação.
POST /api/v1/search/semantic: busca semântica em documentos indexadosGET /api/v1/search: busca global por nome/metadadosGET /api/v1/api-keys: lista chaves da conta autenticadaPOST /api/v1/api-keys: cria uma nova API KeyPATCH /api/v1/api-keys/{api_key_id}/revoke: revoga uma API KeyGET /api/v1/machines: lista máquinas/agentes cadastradosPOST /api/v1/machines: cria máquina e gera script de instalação do agentePOST /api/v1/machines/{machine_id}/command: envia comando para agente onlineGET /api/v1/machines/ws/{machine_id}: WebSocket do agente local
- Criptografia aplicada no backend para todos os uploads via
POST /api/v1/files/upload - Chave de criptografia via variável
FILE_ENCRYPTION_KEY_BASE64 - Endpoints antigos de upload por presigned URL foram descontinuados (
410 Gone):POST /api/v1/files/upload-urlPOST /api/v1/files/complete
- Redis ativo para enfileirar processamento assíncrono
- Worker Celery ativo para executar tasks de RAG e tagging
- Sem worker, upload funciona, mas indexação/tags não são processadas
- Backend precisa de MongoDB para persistência de máquinas, API Keys e metadados
- O agente local precisa de conectividade HTTP/WebSocket até o backend
- O script de máquina usa Tkinter para seleção de diretórios quando disponível
backend/ API, regras de negócio e integrações
frontend/ aplicação React
- Backend:
backend/README.md - Frontend:
frontend/README.md