Plataforma web para conversão, organização e preparação de arquivos com foco em produtividade.
O projeto é frontend-only, com interface em React + Vite e processamento executado no navegador.
Versão em inglês: README.en.md
- Frontend:
frontend/ - Build estático para GitHub Pages:
docs/
- Language
- Visão geral
- Recursos
- Idiomas
- Arquitetura
- Stack
- Estrutura do projeto
- Pré-requisitos
- Instalação
- Variáveis de ambiente
- Como rodar localmente
- Build e deploy
- Scanner (bridge local)
- Limitações conhecidas
- Scripts disponíveis
- Roadmap
- Licença
- Documentação principal (Português): README.md
- English version: README.en.md
O PDF XinoConvert reúne ferramentas de PDF, imagem, documentos e utilitários em uma interface única.
Os fluxos principais rodam diretamente no navegador e podem ser publicados como site estático.
- Imagem para PDF com múltiplos arquivos e ordenação
- PDF para imagens em JPG ou PNG com exportação ZIP
- Compressão de PDF no navegador
- Juntar PDF
- Dividir PDF
- Rotacionar PDF
- Remover páginas
- Extrair páginas
- Conversão de formato entre JPG, PNG, WEBP, BMP e GIF
- Fluxo de múltiplos arquivos
- Conversão de documentos para PDF, incluindo TXT, MD, RTF, DOCX, CSV, XLS e XLSX
- Fluxo de digitalização com preparação de páginas
- Geração de ZIP para múltiplos downloads
- Detecção automática de formato com sugestão de ferramenta
- Conversor de áudio com suporte a MP3, WAV, OGG, FLAC, AAC, M4A, MP4 e OPUS
- Conversão em lote de até 10 arquivos
- Layout responsivo para desktop e mobile
- Sidebar flutuante no desktop
- Tema claro/escuro
- Feedback visual de progresso e estado
- Navegação por categoria de ferramentas
A interface possui alternância de idioma no menu.
- Português (pt-BR)
- English (en)
- Español (es)
- Français (fr)
Detalhes da implementação:
- i18n com
i18nextereact-i18next - idioma persistido em
localStorage - seletor com bandeiras SVG em
frontend/public/assets/flags/
A aplicação pode ser publicada como site estático no GitHub Pages com saída em docs/.
- roteamento SPA com
HashRouter - assets estáticos otimizados pelo Vite
- processamento local no navegador para os fluxos principais
- React 18
- Vite
- Tailwind CSS
- React Router
- i18next + react-i18next
- dnd-kit
- pdf-lib
- pdfjs-dist
- jsPDF
- JSZip
- ffmpeg.wasm carregado em runtime no navegador
- Mammoth
- xlsx
- Lucide React
.
├─ docs/
│ ├─ index.html
│ ├─ assets/
│ ├─ css/
│ └─ js/
├─ frontend/
│ ├─ public/
│ │ ├─ assets/
│ │ │ ├─ flags/
│ │ │ ├─ social/
│ │ │ └─ visuals/
│ │ └─ favicon_pdf.ico
│ ├─ src/
│ │ ├─ components/
│ │ ├─ hooks/
│ │ ├─ i18n/
│ │ ├─ pages/
│ │ ├─ scanner/
│ │ ├─ services/
│ │ └─ utils/
│ ├─ index.html
│ └─ vite.config.js
├─ package.json
└─ README.md
- Node.js 20+
- npm 10+
Na raiz do projeto:
npm installEsse comando instala as dependências da raiz e do workspace frontend.
Arquivo de exemplo: frontend/.env.example
VITE_SCANNER_PROVIDER=bridge
VITE_SCANNER_BRIDGE_URL=http://127.0.0.1:24833Notas:
VITE_SCANNER_PROVIDER=mockpermite testar a UI de scanner sem dispositivo real.
Na raiz:
npm run devURL padrão: http://localhost:5173
Comando equivalente do workspace:
npm run dev -w frontendnpm run buildnpm run build:pagesO artefato final é gerado em docs/.
Durante o build, o script scripts/generate-route-entrypoints.mjs cria arquivos index.html
em cada rota publica (por exemplo docs/pdf-tools/index.html). Isso evita resposta 404
em acesso direto por URL e melhora a cobertura de indexacao no Search Console.
npm run preview:pagesWorkflows incluídos:
.github/workflows/validate-pr.yml.github/workflows/deploy-pages.yml
Fluxo esperado:
- PR para a branch principal valida o build.
- Push na branch principal gera o build e publica no GitHub Pages.
URL pública:
A camada de scanner é desacoplada por providers:
frontend/src/scanner/providers/ScannerProvider.jsfrontend/src/scanner/providers/LocalBridgeScannerProvider.jsfrontend/src/scanner/providers/MockScannerProvider.js
Endpoints esperados no bridge local:
GET /statusGET /devicesPOST /connectPOST /scanPOST /cancel
Teste sem scanner físico:
- Defina
VITE_SCANNER_PROVIDER=mock. - Rode
npm run dev. - Acesse a página de escaneamento.
- Alguns formatos de escritório, como DOC, ODT, PPT e PPTX, podem ter fidelidade parcial em conversão puramente client-side.
- Compressão de PDF baseada em recomposição de páginas pode gerar perda visual em níveis mais agressivos.
- O conversor de áudio depende do carregamento do FFmpeg via CDN no navegador; redes com bloqueio de CDN ou proxy podem impedir a conversão.
- A primeira carga do conversor de áudio pode ser mais lenta devido ao download inicial dos arquivos do FFmpeg.
npm run devpara o frontendnpm run buildpara o build do frontendnpm run build:pagespara gerardocs/npm run preview:pagespara visualizar o build
npm run dev -w frontendnpm run build -w frontendnpm run preview -w frontend
- Persistência de histórico por usuário
- Fila assíncrona para arquivos grandes
- Melhoria de fidelidade para formatos de escritório complexos
- Pipeline opcional de processamento remoto
Este projeto está licenciado sob os termos do arquivo LICENSE.

