O PDF Maker é uma aplicação web focada em privacidade e performance. Ela permite que os usuários combinem múltiplos arquivos PDF e imagens (PNG/JPG) em um único documento PDF, reordenem páginas via Drag & Drop e apliquem compressão opcional.
Toda a manipulaçã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.
- ⚡ Alta Performance: Execução de compilação delegada para uma thread secundária (Web Worker), mantendo a interface fluida.
- 🖼️ Suporte a Imagens e Compressão: Converte imagens para PDF on-the-fly, com opção nativa (via
OffscreenCanvas) para redução de peso e tamanho final do arquivo. - 🖱️ Drag & Drop Reativo: Interface moderna que permite reordenar visualmente as páginas antes da geração do PDF final.
- 🎨 Neon UI / Dark Mode: Design moderno focado em conforto visual 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 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 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-maker.git](https://github.com/luizhanauer/pdf-maker.git)cd pdf-maker- 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/pdf-maker/ 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
# Verifica a cobertura total do código (100%)
npm run test:coverage
- 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.
- 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.
