Motor de orquestração, extração e composição de documentos PDF com execução 100% local.
O PDF Composer é uma aplicação web focada em privacidade e performance. Ela permite que os usuários extraiam páginas de múltiplos arquivos PDF simultaneamente, insiram imagens (PNG/JPG) e construam um documento final completamente novo orquestrando a ordem de leitura em uma linha do tempo visual.
Toda a manipulação, extração e renderização ocorre localmente no navegador do usuário utilizando Web Workers, garantindo que nenhum dado seja enviado para servidores externos.
- 🔒 Privacy-First (Zero Server): Processamento 100% client-side. Seus documentos nunca saem da sua máquina.
- 🗂️ Orquestração Multi-Documento: Extraia páginas de diferentes PDFs ao mesmo tempo e manipule-as como blocos individuais.
- ⚡ Alta Performance: Leitura de miniaturas e compilação de binários delegadas para threads secundárias (Web Worker), mantendo a interface fluida.
- 🖱️ Drag & Drop Reativo: Interface moderna que permite arrastar, inserir e reordenar visualmente as páginas na linha do tempo antes da geração do PDF final.
- 🎨 Neon UI / Dark Mode: Design moderno focado em conforto visual (Vermelho Neon) e clareza de interações.
Este projeto não é apenas uma ferramenta útil, mas também um laboratório de boas práticas de engenharia de software:
- Clean Architecture & DDD: O domínio de manipulação de PDF (tipos, entidades, contratos e serviços do Web Worker) é estritamente isolado da camada de apresentação (Vue/UI).
- Object Calisthenics (No Else / Small Files): O fluxo lógico é desenhado para evitar ramificações condicionais desnecessárias (
else), resultando em um código mais limpo, previsível e fácil de manter, dividido em arquivos de responsabilidade única. - Boundary Protection & Domain Integrity: Uso rigoroso do
TypeScript Strict Modee proteção de mutabilidade de memória (prevenção de detached buffers) ao trafegar dados entre a Main Thread e o Web Worker. - Test-Driven Development (TDD): Cobertura de testes unitários (100%) garantindo o comportamento e a resiliência da interface gráfica e das regras de negócio usando Vitest.
Pré-requisitos: Node.js v18+ (Desenvolvido e homologado em ambiente Ubuntu 24.04).
- Clone o repositório:
git clone https://github.com/luizhanauer/pdf-composer.gitcd pdf-composer- Instale as dependências:
npm install- Inicie o servidor de desenvolvimento:
npm run dev- Acesse em seu navegador (confira a porta no terminal):
http://localhost:5174/Para executar a suíte completa de testes com checagem de integridade estrutural e geração do relatório de cobertura global:
# Executa testes em modo watch
npm run test
# Executa testes com interface visual no navegador
npm run test:ui- Vue 3 (Composition API / Script Setup): Framework reativo de interface.
- Vite: Build tool ultrarrápido.
- Tailwind CSS v4: Estilização utilitária e criação do Design System Neon.
- pdf-lib: Motor robusto de manipulação de binários PDF via TypeScript.
- pdfjs-dist: Engine baseada em Canvas para renderização assíncrona das miniaturas.
- Vitest + Vue Test Utils: Framework de testes e asserções.
Contribuições são bem-vindas! Se você encontrar algum problema ou tiver sugestões para melhorar a aplicação, sinta-se à vontade para abrir uma issue ou enviar um pull request.
Se você gostou do meu trabalho e quer me agradecer, você pode me pagar um café :)
Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter mais informações.
Desenvolvido por Luiz Hanauer.
