# 🐴 GoHorse Jobss [![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 --- ## 📊 Status Atual do Sistema (GoHorse Report) Diagrama gerado automaticamente com base nos testes de validação do MVP. Legenda: * 🟢 **Verde:** Funcionando/Operacional. * 🟡 **Amarelo:** Parcial/Bugado. * 🔴 **Vermelho:** Quebrado/Faltando Config. * 💀 **Vermelho Escuro:** Falha Crítica de Segurança. ```mermaid graph TD %% Estilos classDef working fill:#dcfce7,stroke:#16a34a,stroke-width:2px; classDef partial fill:#fef9c3,stroke:#ca8a04,stroke-width:2px,stroke-dasharray:5 5; classDef broken fill:#fee2e2,stroke:#dc2626,stroke-width:2px,stroke-dasharray:5 5; classDef critical fill:#991b1b,stroke:#fca5a5,stroke-width:4px,color:#fff; classDef success fill:#dcfce7,stroke:#16a34a,stroke-width:2px; classDef warning fill:#fef9c3,stroke:#ca8a04,stroke-width:2px; classDef error fill:#fee2e2,stroke:#dc2626,stroke-width:2px; subgraph Frontend["Frontend & App"] FE[Next.js 15]:::working end subgraph Backend["Core Backend"] API[Go API]:::working DB[(PostgreSQL)]:::working BO[NestJS Backoffice]:::broken end subgraph Integracoes["Integrações (O Gargalo)"] MQ[LavinMQ]:::broken S3["Cloudflare R2/S3
(Uploads)"]:::broken FCM[Firebase FCM]:::broken AW["Appwrite Realtime
(Chat)"]:::broken ST["Stripe
(Pagamentos)"]:::broken end %% Fluxos FE -->|✅ OK| API API -->|✅ OK| DB %% Falhas API -.->|❌ Falha no Upload| S3 FE -.->|❌ Falha na Conexão| AW API -.->|❌ Não Configurado| MQ API -.->|❌ Mockado/Ignorado| ST %% Alerta de Segurança SEC["⚠️ FALHA CRÍTICA DE SEGURANÇA
Usuário altera o próprio Role para SuperAdmin"]:::critical FE -.-> SEC %% Atores Empresa((Empresa)) Candidato((Candidato)) %% Fluxo Empresa subgraph JornadaEmpresa["Jornada da Empresa"] LoginE[Login/Registro]:::success Dash[Dashboard]:::warning NewJob[Criar Vaga]:::warning Payment[Pagamento]:::error ListJobs[Listar Minhas Vagas]:::error AdminUser[Gerenciar Usuários]:::success end %% Fluxo Candidato subgraph JornadaCandidato["Jornada do Candidato"] Search[Buscar Vagas]:::success Details[Ver Detalhes]:::success Apply[Candidatar-se]:::error end %% Conexões Empresa Empresa --> LoginE LoginE --> Dash Dash -->|Botão 'Publish' não funciona| NewJob NewJob -->|❌ Salva mas não aparece na lista da empresa| ListJobs NewJob -.->|❌ Pula Etapa| Payment LoginE -->|⚠️ PERIGO: Permite virar Admin| AdminUser %% Conexões Candidato Candidato --> Search Search -->|Vê vaga criada pela empresa| Details Details -->|❌ Erro: Upload Obrigatório Falha| Apply %% Funcionalidades Isoladas subgraph OutrosModulos["Outros Módulos"] Tickets[Tickets/Suporte]:::success Chat[Chat Realtime]:::error end ``` --- ## 📄 Licença Este projeto está sob a licença MIT. Veja [LICENSE](LICENSE) para detalhes. ---

Desenvolvido com ❤️ pela equipe GoHorse