# 🐴 GoHorse Jobs

[![Go](https://img.shields.io/badge/Go-1.24-00ADD8?style=flat-square&logo=go)](https://golang.org/)
[![Next.js](https://img.shields.io/badge/Next.js-15-black?style=flat-square&logo=next.js)](https://nextjs.org/)
[![NestJS](https://img.shields.io/badge/NestJS-11-E0234E?style=flat-square&logo=nestjs)](https://nestjs.com/)
[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-16-336791?style=flat-square&logo=postgresql)](https://postgresql.org/)
[![Docker](https://img.shields.io/badge/Docker-Ready-2496ED?style=flat-square&logo=docker)](https://docker.com/)

> 🇧🇷 Plataforma SaaS de recrutamento conectando empresas e profissionais de tecnologia.

---

## 💼 O Negócio

### Proposta de Valor

**GoHorse Jobs** é uma plataforma completa de recrutamento que conecta empresas a candidatos qualificados, oferecendo:

| Para Empresas | Para Candidatos |
|---------------|-----------------|
| ✅ Publicar vagas ilimitadas | ✅ Buscar vagas com filtros avançados |
| ✅ Gerenciar candidaturas | ✅ Candidatar-se em 1 clique |
| ✅ Chat em tempo real | ✅ Perfil profissional completo |
| ✅ Painel de analytics | ✅ Notificações push |
| ✅ Múltiplos recrutadores | ✅ Favoritar vagas |

### Modelos de Monetização

| Plano | Features | Preço |
|-------|----------|-------|
| **Basic** | 3 vagas/mês, 1 usuário | Grátis |
| **Pro** | 20 vagas/mês, 5 usuários | R$ 199/mês |
| **Enterprise** | Ilimitado, SSO, API | Sob consulta |

---

## 🔄 Fluxos de Negócio

### 1. Empresa Publica Vaga

```mermaid
flowchart LR
    A[Empresa] --> B[Registro/Login]
    B --> C[Criar Vaga]
    C --> D[Pagamento]
    D --> E[Vaga Publicada]
    E --> F[Candidatos Aplicam]
    F --> G[Triagem]
    G --> H[Contratação]
```

### 2. Candidato Busca Emprego

```mermaid
flowchart LR
    A[Candidato] --> B[Buscar Vagas]
    B --> C[Filtrar]
    C --> D[Ver Detalhes]
    D --> E[Candidatar]
    E --> F[Aguardar Resposta]
    F --> G[Chat com Recrutador]
    G --> H[Contratação]
```

### 3. Registro Rápido + Vaga (Novo!)

```mermaid
flowchart LR
    A[/post-job/] --> B[Dados da Empresa]
    B --> C[Dados da Vaga]
    C --> D[Confirmação]
    D --> E[Empresa + Vaga Criados]
```

---

## 🚀 Roadmap B2C (Marketplace Transformation)

Estamos transformando o GoHorse Jobs de um Job Board tradicional para um **Marketplace Completo** de Serviços e Produtos.

| Fase | Foco | Features Principais | Status |
|------|------|---------------------|--------|
| **1** | **Monetização** | Stripe Checkout, Boost de Vagas, Assinaturas | 🟡 Em Progresso |
| **2** | **Serviços (Gigs)** | Marketplace de Freelancers, Stripe Connect, Escrow | 🔴 Q1 2025 |
| **3** | **Loja (Store)** | Venda de Equipamentos, Merch, Logística | 🔴 Q2 2025 |
| **4** | **AI & Matching** | Video Interviews, Triagem Automática, Cover Letter AI | 🔴 Q3 2025 |

> Ver o [Roadmap Detalhado](docs/ROADMAP.md) para o Gap Analysis completo.

---

## 📚 Documentação

### Documentação Principal

| Documento | Descrição |
|-----------|-----------|
| 📖 [docs/API.md](docs/API.md) | Referência completa da API |
| 🔐 [docs/API_SECURITY.md](docs/API_SECURITY.md) | Autenticação e RBAC |
| 🗄️ [docs/DATABASE.md](docs/DATABASE.md) | Schema do banco de dados |
| 🚀 [docs/DEVOPS.md](docs/DEVOPS.md) | CI/CD, Docker, Kubernetes |
| 🗺️ [docs/ROADMAP.md](docs/ROADMAP.md) | Status e progresso |
| 📋 [docs/TASKS.md](docs/TASKS.md) | Tarefas detalhadas |

### Documentação por Componente

| Componente | Documentação | Tech Stack |
|------------|--------------|------------|
| **Backend** | [backend/BACKEND.md](backend/BACKEND.md) | Go, Clean Architecture, DDD |
| **Frontend** | [frontend/FRONTEND.md](frontend/FRONTEND.md) | Next.js 15, Tailwind, shadcn |
| **Backoffice** | [backoffice/BACKOFFICE.md](backoffice/BACKOFFICE.md) | NestJS, Fastify, Stripe |
| **Seeder** | [seeder-api/README.md](seeder-api/README.md) | Node.js, PostgreSQL |

---

## 🏗️ Arquitetura

```mermaid
graph TB
    subgraph "Frontend (Appwrite)"
        FE[Next.js 15]
    end
    
    subgraph "Backend (Kubernetes)"
        API[Go API]
        BO[NestJS Backoffice]
    end
    
    subgraph "Database"
        DB[(PostgreSQL 16)]
    end
    
    subgraph "External Services"
        MQ[LavinMQ]
        S3[Cloudflare R2]
        FCM[Firebase FCM]
        AW[Appwrite Realtime]
        ST[Stripe]
    end
    
    FE --> API
    FE --> AW
    API --> DB
    API --> MQ
    API --> S3
    BO --> DB
    BO --> MQ
    BO --> FCM
    BO --> ST
```

### Componentes

| Componente | Responsabilidade | Porta |
|------------|------------------|-------|
| **Frontend** | UI, SSR, Auth | 3000 |
| **Backend** | API REST, Business Logic | 8521 |
| **Backoffice** | Stripe, Email, FCM | 3001 |
| **PostgreSQL** | Persistência | 5432 |
| **LavinMQ** | Email Queue | 5672 |

---

## 🛠️ Tech Stack

### Backend (Go)
| Tecnologia | Uso |
|------------|-----|
| Go 1.24 | API REST |
| GORM | ORM |
| JWT v5 | Autenticação |
| Swagger | Documentação |
| BCrypt | Password hashing |

### Frontend (Next.js)
| Tecnologia | Uso |
|------------|-----|
| Next.js 15 | Framework |
| Tailwind 4 | CSS |
| shadcn/ui | Componentes |
| Framer Motion | Animações |
| Appwrite | Realtime |

### Backoffice (NestJS)
| Tecnologia | Uso |
|------------|-----|
| NestJS 11 | Framework |
| Stripe | Pagamentos |
| Nodemailer | Emails |
| Firebase Admin | Push |

---

## 🚀 Quick Start

### Pré-requisitos

- Docker v24+ ou Go 1.24+
- Node.js v20+
- PostgreSQL v16+

### Instalação

```bash
# Clone
git clone https://github.com/rede5/gohorsejobs.git
cd gohorsejobs

# Configure
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env

# Backend
cd backend && go run ./cmd/api

# Frontend (outro terminal)
cd frontend && npm install && npm run dev

# Seeder (opcional)
cd seeder-api && npm install && npm run seed
```

### Usando start.sh

```bash
./start.sh
# Escolha uma opção:
# 1. Run Backend
# 2. Run Frontend
# 3. Run Seeder
# 4. Run Migrations
# 5. Reset + Seed
```

---

## 🔑 Credenciais de Teste

> [!NOTE]
> O SuperAdmin foi atualizado via migration `032_update_superadmin_lol.sql`.
> No primeiro login será necessário trocar a senha (status `force_change_password`).

| Tipo | Login | Email | Senha |
|------|-------|-------|-------|
| **SuperAdmin** | `lol` | `lol@gohorsejobs.com` | `Admin@2025!` |
| **Company Admin** | `takeshi_yamamoto` | - | `Takeshi@2025` |
| **Recruiter** | `maria_santos` | - | `User@2025` |
| **Candidate** | `paulo_santos` | - | `User@2025` |

> [!WARNING]
> Se o login retornar 401, verifique se a migration `032_update_superadmin_lol.sql` foi executada no banco.

---

## 🔧 Environment Variables

### Backend

```env
DATABASE_URL=postgres://user:pass@host:5432/db
JWT_SECRET=your-secret-key-min-32-chars
PASSWORD_PEPPER=your-pepper
CORS_ORIGINS=https://frontend.com
```

### Frontend

```env
NEXT_PUBLIC_API_URL=https://api.gohorsejobs.com
NEXT_PUBLIC_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
NEXT_PUBLIC_APPWRITE_PROJECT_ID=your-project
```

### Backoffice

```env
DATABASE_URL=postgres://user:pass@host:5432/db
STRIPE_SECRET_KEY=sk_test_xxx
AMQP_URL=amqp://user:pass@host:5672
```

---

## 📂 Estrutura

```
gohorsejobs/
├── backend/              # Go API (Clean Architecture)
│   ├── cmd/api/          # Entrypoint
│   ├── internal/         # Business logic
│   ├── migrations/       # 30 SQL migrations
│   └── BACKEND.md        # Documentação
│
├── frontend/             # Next.js 15 App
│   ├── src/app/          # 35 pages
│   ├── src/components/   # 44 components
│   └── FRONTEND.md       # Documentação
│
├── backoffice/           # NestJS API
│   ├── src/              # 7 modules
│   └── BACKOFFICE.md     # Documentação
│
├── seeder-api/           # Node.js Seeder
│   └── README.md         # Documentação
│
├── docs/                 # Documentação central
│   ├── API.md
│   ├── API_SECURITY.md
│   ├── DATABASE.md
│   ├── DEVOPS.md
│   ├── ROADMAP.md
│   └── TASKS.md
│
├── k8s/                  # Kubernetes manifests
│   ├── dev/
│   ├── hml/
│   └── prd/
│
└── start.sh              # Script de inicialização
```

---

## 📊 Status do Projeto

| Área | Progresso | Status |
|------|-----------|--------|
| Backend API | 95% | 🟢 Production Ready |
| Frontend | 85% | 🟢 Funcional |
| Backoffice | 80% | 🟢 Funcional |
| Seeder | 100% | 🟢 Completo |
| Documentação | 95% | 🟢 Atualizada |

Ver [docs/ROADMAP.md](docs/ROADMAP.md) para detalhes.

---

## 🤝 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 [LICENSE](LICENSE) para detalhes.

---

<p align="center">
  <sub>Desenvolvido com ❤️ pela equipe GoHorse</sub>
</p>
