No description
Find a file
2025-12-23 23:28:17 -03:00
ass-email feat: add HTML email signature templates with dynamic fields 2025-12-11 15:13:52 -03:00
backend refactor: rename PORT to BACKEND_PORT and API_HOST to BACKEND_HOST 2025-12-23 23:28:17 -03:00
backoffice feat(migration): move admin cloudflare routes to backoffice and cleanup backend 2025-12-15 10:52:40 -03:00
docs feat: add 6-step job wizard with Preview, Billing, Payment steps and Stripe integration preparation 2025-12-23 23:00:17 -03:00
frontend feat: add 6-step job wizard with Preview, Billing, Payment steps and Stripe integration preparation 2025-12-23 23:00:17 -03:00
job-scraper-multisite chore: add complete .env.example files for all services 2025-12-14 09:48:56 -03:00
k8s novo 2025-12-22 22:29:03 -03:00
seeder-api feat: enhance job form with currency, salary periods, contract types, and add ER diagram docs 2025-12-23 22:49:33 -03:00
.drone.yml Update .drone.yml 2025-12-22 23:01:31 -03:00
.gitignore chore: add Dockerfiles and gitignore files for all services 2025-12-14 09:28:09 -03:00
DEVOPS.md docs: atualização de documentação e verificação de testes 2025-12-22 22:17:18 -03:00
README.md feat: security refactor, server-side pagination, and docs update 2025-12-23 00:50:51 -03:00
ROADMAP.md feat: security refactor, server-side pagination, and docs update 2025-12-23 00:50:51 -03:00
start.sh feat(dev): 🎮 unified interactive start script 2025-12-15 10:00:50 -03:00
verify_frontend.sh feat: Implement Ticket System, Profile Page integration, and fix migrations 2025-12-23 19:22:55 -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

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
# Ou utilize docker-compose se disponível (verifique k8s/ para manifests)

# 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

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 User@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

Modelagem de Banco

Veja a documentação completa do banco de dados em: docs/DATABASE.md

Roadmap

Acompanhe o desenvolvimento do projeto em: ROADMAP.md

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
│
└── 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