Template — Gere currículos compatíveis com sistemas ATS nos formatos DOCX e Markdown a partir de um único arquivo JSON. Desenvolvido com TypeScript e Arquitetura Limpa (Clean Architecture).
- Gera currículos nos formatos
.docxe.mdpara diferentes objetivos profissionais. - Extrai palavras-chave de uma descrição de vaga e as incorpora ao currículo.
- Todos os seus dados pessoais ficam centralizados em um único arquivo
resume.json(ignorado pelo Git — nunca é enviado ao repositório). - Toda a configuração dos perfis profissionais fica em arquivos JSON dentro da pasta
config/, sem necessidade de alterar código TypeScript. - Arquitetura baseada em Clean Architecture: Domínio → Aplicação → Infraestrutura → Apresentação.
# 1. Clone o repositório ou utilize este template
git clone https://github.com/your-user/ats-cv-generator.git
cd ats-cv-generator
# 2. Instale as dependências
npm install
# 3. Crie seu arquivo de currículo
cp resume.example.json resume.json
# ✏️ Edite o arquivo resume.json com seus dados reais
# 4. Gere todos os currículos (DOCX)
npm run generate -- --all
# 5. Os arquivos gerados estarão na pasta ./output/Copie resume.example.json para resume.json e preencha todos os campos.
O arquivo resume.json é ignorado pelo Git, garantindo que seus dados pessoais nunca sejam enviados ao repositório.
Cada chave representa um perfil profissional. Você pode adicionar, renomear ou remover perfis conforme desejar.
Defina um resumo profissional para cada perfil. O texto pode ser escrito em primeira ou terceira pessoa.
{
"node_react": "Engenheiro de Software especializado em..."
}As habilidades são organizadas por categoria e exibidas na ordem definida no arquivo.
{
"node_react": {
"Linguagens": ["TypeScript", "JavaScript"],
"Backend": ["Node.js", "Express.js"]
}
}Relaciona empresas (com o mesmo nome utilizado em resume.json) a métricas baseadas em palavras-chave.
Quando uma atividade profissional contém alguma das palavras-chave definidas, o resultado correspondente é automaticamente acrescentado à descrição.
{
"Acme Corp": [
{
"keywords": ["api", "rest"],
"result": "Redução de 30% no tempo de resposta dos serviços"
}
]
}# Gerar todos os perfis (DOCX)
npm run generate -- --all
# Gerar apenas um perfil
npm run generate -- --focus=node_react
# Gerar currículo personalizado a partir de uma descrição de vaga
npm run generate -- --focus=node_react --job=descricao-da-vaga.txt
# Gerar todos os currículos em Markdown
npm run generate -- --all --markdown
# Gerar todos os perfis utilizando uma descrição de vaga
npm run generate -- --all --job=descricao-da-vaga.txt| Opção | Descrição |
|---|---|
--all |
Gera todos os perfis configurados |
--focus=<id> |
Gera apenas um perfil específico |
--job=<arquivo> |
Caminho para um arquivo .txt contendo a descrição da vaga para extração de palavras-chave |
--markdown |
Gera arquivos .md em vez de .docx |
ats-cv-generator/
├── src/
│ ├── domain/ # Regras de negócio (sem dependências externas)
│ │ ├── entities/
│ │ ├── interfaces/
│ │ └── services/
│ ├── application/ # Casos de uso
│ ├── infrastructure/ # Adaptadores externos
│ ├── presentation/ # Interface de linha de comando (CLI)
│ └── main.ts # Ponto de entrada
├── config/ # Arquivos de configuração
│ ├── focuses.json
│ ├── profiles.json
│ ├── skills.json
│ └── impact-rules.json
├── resume.example.json # Modelo de currículo
├── resume.json # Seus dados (ignorado pelo Git)
├── output/ # Currículos gerados (ignorado pelo Git)
├── tsconfig.json
└── package.json
Argumentos CLI
│
┌─────────▼──────────┐
│ Apresentação (CLI) │
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ Aplicação │
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ Domínio │
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ Infraestrutura │
└────────────────────┘
A camada de Domínio possui zero dependências externas. Ela não depende de bibliotecas como fs, docx ou path, tornando as regras de negócio independentes e facilmente testáveis.
# Compila o projeto para a pasta dist/
npm run build
# Executa a versão compilada
npm run generate:compiled -- --allEste projeto está licenciado sob a Licença MIT.
{ "node_react": { "filename": "Curriculo_Node_React.docx", "title": "Engenheiro Full Stack Node.js" } }