Skip to content

luizhanauer/pdf-maker

Repository files navigation

📄 PDF Maker

Motor de criação, conversão e mesclagem de documentos de execução 100% local.

Vue.js TypeScript Tailwind CSS Vitest


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.

✨ Funcionalidades

  • 🔒 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.

🏗️ Princípios de Engenharia e Arquitetura

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 Mode e 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.

🚀 Como Executar o Projeto Localmente

Pré-requisitos: Node.js v18+ (Desenvolvido e homologado em ambiente Ubuntu 24.04).

  1. Clone o repositório:
git clone [https://github.com/luizhanauer/pdf-maker.git](https://github.com/luizhanauer/pdf-maker.git)
cd pdf-maker
  1. Instale as dependências:
npm install
  1. Inicie o servidor de desenvolvimento:
npm run dev
  1. Acesse em seu navegador (confira a porta no terminal):
http://localhost:5174/pdf-maker/ 

🧪 Rodando os Testes

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

🛠️ Tecnologias Utilizadas

Contribuição

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é :)

Buy Me A Coffee

Licença

Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter mais informações.


Desenvolvido por Luiz Hanauer.

About

🗃️ Motor de criação, conversão e mesclagem de PDFs e imagens. Processamento 100% client-side via Web Workers garantindo total privacidade.

Topics

Resources

License

Stars

Watchers

Forks

Contributors