Plataforma open source de otimização de currículos com Inteligência Artificial
Coomb é uma plataforma completa que utiliza IA para ajudar profissionais a otimizarem seus currículos. O sistema analisa experiências, habilidades e formações, oferecendo sugestões personalizadas e gerando currículos formatados profissionalmente.
- Chat com IA para otimização de currículos
- Importação de PDF/DOCX com extração automática de dados
- Templates profissionais para exportação
- Análise de completude e score de qualidade
- RAG com Qdrant para enriquecimento de contexto
- Otimização adaptada para vagas específicas
O projeto segue Arquitetura Hexagonal (Ports & Adapters) e Clean Architecture com princípios DDD:
coomb/
├── packages/
│ ├── api/ # Backend NestJS
│ │ ├── src/
│ │ │ ├── modules/
│ │ │ │ └── [module]/
│ │ │ │ ├── domain/ # Entidades e regras de negócio
│ │ │ │ ├── application/ # Casos de uso
│ │ │ │ └── infrastructure/ # Adaptadores (HTTP, DB)
│ │ │ └── common/
│ │ └── prisma/ # Schema e migrations
│ │
│ ├── web/ # Frontend Next.js 15
│ │ ├── src/
│ │ │ ├── app/ # App Router (Next.js 15)
│ │ │ └── shared/
│ │ │ ├── components/ # Componentes globais + providers
│ │ │ ├── entities/ # Entidades de domínio
│ │ │ ├── schemas/ # Validação Zod
│ │ │ ├── services/ # Services com classes
│ │ │ └── hooks/ # React hooks customizados
│ │ └── package.json
│ │
│ └── pdf/ # Serviço de IA Python/FastAPI
│ ├── services/ # Lógica de negócio
│ ├── layouts/ # Templates de currículo
│ └── main.py
│
└── infrastructure/
├── docker/ # Docker Compose
└── aws/ # Terraform AWS (ECS, RDS, S3)
- Hexagonal Architecture: Separação clara entre domínio, aplicação e infraestrutura
- MVVM Pattern (Frontend): Model-View-ViewModel para componentes complexos
- Server-First Architecture: Server Actions e Components do Next.js 15
- Entity-Driven Design: Entidades como fonte única de verdade
- Schema Validation: Zod schemas com type inference (
z.infer<typeof schema>) - Service Classes: Métodos
add,update,remove,listpadronizados
- Next.js 15.5 - App Router, Server Components, Server Actions
- React 19 - Componentes modernos
- TypeScript 5.9 - Tipagem estática
- Tailwind CSS - Estilização
- Shadcn/ui - Componentes UI
- Zod - Validação de schemas
- SWR - Cache e sincronização de dados
- NestJS 11 - Framework Node.js
- Prisma 7 - ORM com migrations
- PostgreSQL - Banco de dados (Supabase)
- OpenAI API - Integração com GPT-4
- Qdrant - Vector database para RAG
- FastAPI 0.115 - Framework Python assíncrono
- OpenAI SDK - Integração com modelos de IA
- PyPDF2 & PDFPlumber - Extração de texto de PDFs
- python-docx - Processamento de documentos Word
- ReportLab - Geração de PDFs profissionais
- Docker & Docker Compose - Containerização
- AWS ECS - Orquestração de containers
- AWS RDS - PostgreSQL gerenciado
- AWS S3 - Armazenamento de arquivos
- Terraform - Infrastructure as Code
- Node.js 24.x ou superior
- Python 3.11+
- Docker & Docker Compose
- PostgreSQL (ou use Supabase)
Clone o repositório:
git clone https://github.com/seu-usuario/coomb.git
cd coombConfigure as variáveis de ambiente:
# Backend API (.env)
DATABASE_URL="postgresql://..."
DIRECT_URL="postgresql://..."
OPENAI_API_KEY="sk-..."
QDRANT_URL="http://localhost:6333"
# Frontend (.env.local)
NEXT_PUBLIC_API_URL="http://localhost:3001"
NEXT_PUBLIC_SUPABASE_URL="https://..."
NEXT_PUBLIC_SUPABASE_ANON_KEY="..."
# AI Service (.env)
OPENAI_API_KEY="sk-..."# Subir todos os serviços
docker compose up -d --build
# Ver logs
docker compose logs -f
# Parar serviços
docker compose downAcessar:
- Frontend: http://localhost:3000
- Backend API: http://localhost:3001
- AI Service: http://localhost:8001
- Qdrant Dashboard: http://localhost:6333/dashboard
cd packages/api
# Instalar dependências
npm install
# Gerar Prisma Client
npx prisma generate
# Rodar migrations
npx prisma migrate dev
# Iniciar em modo desenvolvimento
npm run start:devcd packages/web
# Instalar dependências
npm install
# Iniciar em modo desenvolvimento
npm run dev
# Build de produção
npm run buildcd packages/pdf
# Criar ambiente virtual
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
# Instalar dependências
pip install -r requirements.txt
# Iniciar servidor
python main.pynpm run start:dev # Desenvolvimento
npm run build # Build de produção
npm run test # Testes unitários
npx prisma studio # Interface visual do banco
npx prisma migrate dev # Criar migrationnpm run dev # Desenvolvimento
npm run build # Build de produção
npm run lint # Linter
npm run type-check # Verificação de tiposO projeto utiliza Prisma 7 com PostgreSQL. Principais features:
- Enums: MessageRole, MessageContentType
- Relations: User -> Resume -> Experiences/Skills/etc
- Soft Delete: Campo
deletedAtem registros relevantes - Timestamps:
createdAteupdatedAtautomáticos - UUIDs: Chaves primárias com
gen_random_uuid()
# Criar nova migration
npx prisma migrate dev --name nome_da_migration
# Aplicar migrations em produção
npx prisma migrate deploy
# Reset do banco (cuidado!)
npx prisma migrate reset- Análise e otimização de currículos
- Sugestões personalizadas de melhorias
- Extração estruturada de dados de PDFs
- Armazenamento de embeddings
- Busca semântica de contexto
- Enriquecimento de respostas da IA
- Análise - Score de completude e qualidade
- Enriquecimento - RAG com contexto relevante
- Otimização - Sugestões da IA
- Formatação - Geração de PDF profissional
- Autenticação: JWT com Supabase Auth
- Validação: Zod schemas em toda aplicação
- Rate Limiting: Throttling no NestJS
- CORS: Configurado para ambientes específicos
- Sanitização: Inputs validados e sanitizados
# Backend
cd packages/api
npm run test # Unit tests
npm run test:e2e # E2E tests
npm run test:cov # Coverage
# Frontend
cd packages/web
npm run test # Jest tests
npm run test:watch # Watch modecd infrastructure/aws
# Inicializar Terraform
terraform init
# Planejar mudanças
terraform plan
# Aplicar infraestrutura
terraform apply
# Destruir (cuidado!)
terraform destroy# Build de imagens
docker compose -f docker-compose.prod.yml build
# Deploy
docker compose -f docker-compose.prod.yml up -dContribuições são bem-vindas! Por favor:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- TypeScript: camelCase para variáveis/funções, PascalCase para classes/componentes
- Commits: Conventional Commits (
feat:,fix:,refactor:, etc.) - Imports: Ordenados (React -> libs -> local)
- Componentes: Um componente por arquivo
- Schemas: Zod para validação, inferência de tipos
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Yan Castro
- GitHub: @cplx
- LinkedIn: Yan Castro
- OpenAI pela API GPT-4
- Comunidade Next.js e NestJS
- Supabase pelo excelente BaaS
- Shadcn/ui pelos componentes
Se este projeto te ajudou, considere dar uma estrela no repositório.
