Skip to content

Latest commit

 

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



LUME Logo

🌟 Visão Geral

O Lume é uma plataforma profissional de candidaturas desenvolvida para ajudar candidatos a criar, gerenciar e otimizar todo o seu ecossistema de apresentação profissional (currículos de alta performance, cartas de apresentação elegantes e mensagens de e-mail personalizadas para recrutadores).

A plataforma permite estruturar informações de forma clara, validar currículos contra leitores ATS, organizar documentos por tags, e exportar currículos e cartas diretamente para PDF de alta qualidade com suporte total a múltiplos idiomas.

🚀 Deploy & Demonstração

O projeto está implantado e pronto para uso em produção no seguinte endereço: 👉 https://lume.guibus.dev/

📸 Galeria

Tela de Login

Modelo de Currículo Um

Modelo de Currículo Dois

Editor de Carta de Apresentação

Gerador de Mensagem de E-mail

🛠️ Stack Tecnológica

React NextJS Typescript TailwindCSS ShadCNUI Framer Motion Radix Phosphor Icons React Hook Form Zod PrismaORM PostgreSQL Clerk nextintl nuqs pnpm Vercel Vitest Playwright ESLint Prettier Husky Conventional Commits

🏛️ Arquitetura do Sistema

O Lume utiliza uma arquitetura reativa moderna em que a edição do formulário sincroniza simultaneamente o visualizador em HTML e a compilação do canvas em PDF:

graph TB
    subgraph Client ["💻 Frontend Client-Side (Browser)"]
        UI["🎨 Editor Form (React Hook Form + Zod)"]
        Preview["👁️ Live Preview (HTML/Tailwind)"]
        PDF["📄 @react-pdf/renderer (Client Canvas)"]
        ATS["📊 ATS & Keyword Engine"]
    end

    subgraph Server ["⚡ Next.js 16 & Server Layer"]
        Proxy["🛡️ Proxy Middleware (Clerk + next-intl)"]
        Actions["⚡ Server Actions (resumeActions.ts)"]
    end

    subgraph DB ["🗄️ Camada de Banco de Dados"]
        Prisma["💎 Prisma ORM"]
        Postgres[("🐘 PostgreSQL")]
    end

    UI -->|Digitando em tempo real| Preview
    UI -->|Re-renderiza Canvas| PDF
    UI -->|Calcula Métricas| ATS
    UI -->|Salvar / Compartilhar| Proxy
    Proxy --> Actions
    Actions --> Prisma
    Prisma --> Postgres
Loading

🚀 Funcionalidades Principais

Módulo Funcionalidades Detalhes Técnicos
📝 Editor de Currículo • Abas categorizadas
• Drag & Drop reordering
• Preenchimento dinâmico
Formulário reativo com @dnd-kit/sortable e estado gerenciado com validação Zod.
✉️ Carta de Apresentação • Editor dedicado integrado
• Visualização HTML em tempo real
• Mesmo estilo de cabeçalho e cor
Geração de PDF vetorial de página única via @react-pdf/renderer com links clicáveis e padrão de nomenclatura limpo.
📧 Mensagem para E-mail • Assistente de escrita em segundos
• Três opções de tom de voz
• Links mailto e cópia rápida
Integração nativa de modelos dinâmicos de texto dependentes do idioma selecionado no frontend.
📄 PDF Engine • Preview instantâneo
• Download direto em Blob
• Temas de cores Hex
• Modelos Clássico/Moderno
Desenvolvido com @react-pdf/renderer com suporte a múltiplos templates (1 e 2 colunas) sincronizados entre Web e PDF.
🌐 Internacionalização • Rotas /pt e /en
• Versões vinculadas por groupId
• Seletor dinâmico
Suporte completo via next-intl com sincronização automática do currículo no idioma correto.
🔗 Links Públicos • Slugs curtos e amigáveis
• Métricas de views e downloads
• Layout público limpo
Rotas sob /share/[id] com incrementadores assíncronos e controle de sessão por cookie.

⚖️ Motores de Inteligência & ATS

flowchart TD
    A["📥 Dados do Currículo (ResumeData JSON)"] --> B{"📊 Validador ATS"}
    A --> C{"🔍 Keyword Matcher"}
    A --> D{"✍️ Analisador de Verbos"}

    B --> B1["Checks de Contato, Resumo, Experiências, Skills e Word Count"]
    B1 --> B2["💯 Nota ATS (0 a 100) + Dicas de Melhoria"]

    C --> C1["Compara com Descrição da Vaga + Dicionário 80+ Skills"]
    C1 --> C2["🎯 % de Aderência + Habilidades Ausentes"]

    D --> D1["Detecta Verbos Fracos (ajudei, fiz, mexi)"]
    D1 --> D2["💡 Sugere Verbos Fortes (Liderei, Desenvolvi, Otimizei)"]
Loading

🗄️ Banco de Dados & Estrutura

O modelo E-R combina a velocidade relacional do PostgreSQL para índices de busca com a flexibilidade do JSON para o conteúdo do currículo:

erDiagram
    USER ||--o{ RESUME : "cria e gerencia"

    USER {
        string id PK "Identificador único do Clerk"
        string email UK "E-mail do usuário"
        string name "Nome completo"
    }

    RESUME {
        string id PK "UUID v4"
        string title "Nome do currículo"
        json content "Estrutura JSON do ResumeData"
        string locale "Idioma ('pt', 'en')"
        string colorTheme "Hex da cor temática"
        int views "Visualizações públicas"
        int downloads "Downloads de PDF"
        string userId FK "ID do usuário"
        string groupId "Agrupador de traduções"
        string slug UK "Link amigável único"
        datetime expiresAt "Data limite de expiração (Opcional)"
        int maxViews "Limite de visualizações (Opcional)"
        string[] sectionsOrder "Ordem de exibição das seções"
    }
Loading

🧪 Testes Automatizados (39 Testes)

O projeto conta com uma cobertura completa dividida em testes unitários e testes End-to-End no navegador:

flowchart LR
    subgraph Unit ["🧪 Vitest (24 Testes Unitários)"]
        U1["ResumeSchema Zod (12 testes)"]
        U2["ATS Validator (2 testes)"]
        U3["Keyword Matcher (3 testes)"]
        U4["Spellchecker (2 testes)"]
        U5["LanguageSwitcher (2 testes)"]
        U6["cn() Utility (3 testes)"]
    end

    subgraph E2E ["🎭 Playwright (15 Testes E2E)"]
        E1["Clerk Test Mode Auth"]
        E2["Rotas /pt e /en"]
        E3["Validação de Formulários"]
        E4["Inteligência ATS & Matcher"]
        E5["Backup JSON & PDF Pipeline"]
    end
Loading

🚀 Comandos de Execução

# Rodar suíte de testes unitários com Vitest
pnpm test

# Rodar suíte de testes E2E com Playwright
pnpm test:e2e

# Interface gráfica interativa do Playwright
pnpm test:e2e:ui

🏁 Inicialização Local

1. Clonar e Instalar

git clone https://github.com/gui-bus/Lume.git
cd Lume
pnpm install

2. Subir Banco de Dados com Docker

docker-compose up -d
pnpm prisma migrate dev

3. Rodar Aplicação

pnpm dev

Abra http://localhost:3000 no navegador.


📑 Documentação Técnica Adicional

Para uma imersão profunda em cada módulo da aplicação, consulte a pasta /docs:

  • 🚀 docs/features.md: Mapa detalhado de todas as telas e componentes.
  • 🏗️ docs/architecture.md: Especificação do Next.js App Router, middleware e PDF Engine.
  • 🗄️ docs/database.md: Modelagem física e estratégia de JSON + PostgreSQL.
  • ⚖️ docs/business-rules.md: Regras de pontuação ATS e dicionário de palavras-chave.

About

Lume é um ecossistema de candidaturas para gerar currículos profissionais com score ATS, criar cartas de apresentação e redigir e-mails para recrutadores. Possui preview de PDF instantâneo, match de palavras-chave de vagas, multi-idioma (PT/EN) e filtros por tags.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Contributors

Languages