No description
Find a file
2025-12-15 09:02:08 -03:00
ass-email feat: add HTML email signature templates with dynamic fields 2025-12-11 15:13:52 -03:00
backend feat(db): 🏠 added work_mode because office is overrated anyway 2025-12-15 08:53:41 -03:00
frontend feat(navbar): 🗣️ navbar speaks all languages now 2025-12-15 09:00:49 -03:00
job-scraper-multisite chore: add complete .env.example files for all services 2025-12-14 09:48:56 -03:00
k8s Update dev backend ingress port to 8521 2025-12-14 16:48:38 -03:00
seeder-api docs(seeder): 📊 updated summary because numbers matter 2025-12-15 08:56:25 -03:00
.drone.yml ajusteno k8s 2025-12-14 11:26:47 -03:00
.gitignore chore: add Dockerfiles and gitignore files for all services 2025-12-14 09:28:09 -03:00
DEVOPS.md feat(devops): multi-environment k8s setup and DevOps documentation 2025-12-13 19:30:43 -03:00
marcolino.txt test test 2025-12-14 16:17:56 -03:00
README.md docs: update swagger.json with Jobs endpoints and fix README 2025-12-14 09:31:28 -03:00
run_dev.sh chore: update port configuration to avoid conflicts 2025-12-11 17:06:37 -03:00
run_dev_seed.sh first commit 2025-12-09 19:04:48 -03:00

🐴 GoHorse Jobs

Go Next.js PostgreSQL Docker License

🇧🇷 Plataforma de recrutamento conectando profissionais de tecnologia a oportunidades de emprego.


📋 Índice


🎯 Visão Geral

GoHorse Jobs é uma plataforma completa de recrutamento que permite:

  • 🏢 Empresas: Publicar vagas, gerenciar candidaturas e comunicar-se com candidatos
  • 👤 Candidatos: Buscar vagas, candidatar-se e acompanhar status
  • 👑 Administradores: Gerenciar todo o sistema com painel administrativo

🏗️ Arquitetura

O projeto segue uma arquitetura de microserviços com três componentes principais:

graph TB
    subgraph Frontend
        A[Next.js 15<br/>App Router]
    end
    
    subgraph Backend
        B[Go API<br/>Clean Architecture]
    end
    
    subgraph Database
        C[(PostgreSQL 16)]
    end
    
    subgraph Seeder
        D[Node.js<br/>Seeder API]
    end
    
    A -->|REST API| B
    B -->|GORM| C
    D -->|pg client| C

Padrões Arquiteturais

Componente Padrão Descrição
Backend Clean Architecture Separação em handlers, services, models, usecases
Frontend App Router Next.js 15 com Server Components e Client Components
Multi-tenancy JWT + Company Context Isolamento de dados por empresa via middleware

🛠️ Tech Stack

Backend

Tecnologia Versão Uso
Go 1.24 Linguagem principal
PostgreSQL 16 Banco de dados
JWT v5 Autenticação
Swagger 2.0 Documentação API

Frontend

Tecnologia Versão Uso
Next.js 15 Framework React
Tailwind CSS 4 Estilização
shadcn/ui - Componentes UI
Zod 3.x Validação de schemas
React Hook Form 7.x Gerenciamento de forms

DevOps

Tecnologia Uso
Docker Containerização
Alpine Linux Imagem base (mínima)

📦 Pré-requisitos

Antes de começar, certifique-se de ter instalado:

  • Docker (v24+) e Docker Compose (v2+)
  • Go (v1.24+) - para desenvolvimento local
  • Node.js (v20+) e npm - para frontend e seeder
  • PostgreSQL (v16+) - se rodar sem Docker

🚀 Instalação

Opção 1: Script de Desenvolvimento (Recomendado)

# Clone o repositório
git clone https://github.com/rede5/gohorsejobs.git
cd gohorsejobs

# Execute o script de desenvolvimento
./run_dev.sh

Opção 2: Manual (Passo a Passo)

# 1. Clone o repositório
git clone https://github.com/rede5/gohorsejobs.git
cd gohorsejobs

# 2. Configure as variáveis de ambiente
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
cp seeder-api/.env.example seeder-api/.env

# 3. Inicie o banco de dados (PostgreSQL)
# Certifique-se de ter um PostgreSQL rodando na porta 5432

# 4. Inicie o Backend
cd backend
go run ./cmd/api

# 5. Em outro terminal, inicie o Frontend
cd frontend
npm install
npm run dev

# 6. (Opcional) Popule o banco com dados de teste
cd seeder-api
npm install
npm run seed

🔐 Variáveis de Ambiente

Backend (backend/.env)

Variável Descrição Exemplo
DB_HOST Host do PostgreSQL localhost
DB_PORT Porta do PostgreSQL 5432
DB_USER Usuário do banco postgres
DB_PASSWORD Senha do banco yourpassword
DB_NAME Nome do banco gohorsejobs
JWT_SECRET Secret para JWT (min 32 chars) your-secret-key-at-least-32-chars
PORT Porta da API 8080
ENV Ambiente development ou production
CORS_ORIGINS Origens permitidas http://localhost:3000

Frontend (frontend/.env)

Variável Descrição Exemplo
NEXT_PUBLIC_API_URL URL da API Backend http://localhost:8080

📜 Scripts Disponíveis

Raiz do Projeto

Comando Descrição
./run_dev.sh Inicia backend + frontend em modo desenvolvimento
./run_dev_seed.sh Inicia tudo + popula banco com dados de teste

Backend (cd backend)

Comando Descrição
go run ./cmd/api Inicia o servidor de desenvolvimento
go build ./cmd/api Compila o binário
go test ./... Executa todos os testes
swag init -g cmd/api/main.go Regenera documentação Swagger

Frontend (cd frontend)

Comando Descrição
npm run dev Inicia servidor de desenvolvimento
npm run build Compila para produção
npm run start Inicia servidor de produção
npm run lint Executa linter

Seeder API (cd seeder-api)

Comando Descrição
npm run seed Popula banco com todos os dados
npm run seed:reset Limpa banco e repopula
npm run seed:users Popula apenas usuários

🔑 Credenciais de Teste

Tipo Usuário Senha Dashboard
SuperAdmin superadmin Admin@2025! /dashboard/admin
Admin Empresa takeshi_yamamoto Takeshi@2025 /dashboard/empresa
Recrutador maria_santos Maria@2025 /dashboard/empresa
Candidato paulo_santos User@2025 /dashboard/candidato

📖 Documentação da API

Swagger UI

Acesse a documentação interativa em: http://localhost:8521/docs/index.html

Produção: https://api-dev.gohorsejobs.com/docs/index.html

Endpoints Principais

Método Endpoint Descrição Autenticação
GET / Info da API + IP
GET /health Health check
POST /api/v1/auth/login Login
POST /api/v1/companies Criar empresa
GET /api/v1/companies Listar empresas
GET /api/v1/users Listar usuários JWT
POST /api/v1/users Criar usuário JWT
DELETE /api/v1/users/{id} Deletar usuário JWT
GET /jobs Listar vagas
POST /jobs Criar vaga
GET /jobs/{id} Detalhes da vaga
PUT /jobs/{id} Atualizar vaga
DELETE /jobs/{id} Deletar vaga

📂 Estrutura de Pastas

gohorsejobs/
├── backend/                 # API Go
│   ├── cmd/api/             # Entrypoint da aplicação
│   ├── internal/            # Código interno
│   │   ├── api/             # Handlers e middlewares (Clean Arch)
│   │   ├── core/            # Domain e UseCases (DDD)
│   │   ├── database/        # Conexão com banco
│   │   ├── dto/             # Data Transfer Objects
│   │   ├── handlers/        # Controllers (legacy)
│   │   ├── middleware/      # Middlewares de segurança
│   │   ├── models/          # Entidades do banco
│   │   ├── router/          # Configuração de rotas
│   │   ├── services/        # Lógica de negócios
│   │   └── utils/           # Utilitários (JWT, sanitizer)
│   ├── migrations/          # Migrations SQL
│   └── docs/                # Swagger gerado
│
├── frontend/                # Next.js App
│   └── src/
│       ├── app/             # App Router (páginas)
│       ├── components/      # Componentes React
│       ├── contexts/        # React Contexts
│       ├── hooks/           # Custom Hooks
│       └── lib/             # Utilitários
│
├── seeder-api/              # Seeder Node.js
│   └── src/
│       ├── seeders/         # Scripts de seed por entidade
│       └── index.js         # Entrypoint
│
├── run_dev.sh               # Script de desenvolvimento
└── README.md                # Este arquivo

🤝 Contribuindo

  1. Fork o projeto
  2. Crie sua branch (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'feat: add amazing feature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.


Desenvolvido com ❤️ pela equipe GoHorse