O Govagas é um microsserviço para gerenciamento de oportunidades de emprego. Ele funciona como o core de um ecossistema de prova de conceito (PoC), comunicando-se com outros serviços como Auth-JWT e Email.
O projeto foi recentemente refatorado para seguir os princípios de Clean Architecture e Injeção de Dependências, garantindo um código altamente escalável, testável e de fácil manutenção, além de rodar em um ambiente totalmente containerizado.
- Linguagem: Go (v1.25.5)
- Roteamento: Gin Web Framework
- Persistência: PostgreSQL (migrado de SQLite para maior robustez)
- ORM: GORM
- Infraestrutura: Docker e Docker Compose (Multi-stage builds)
- Configuração:
godotenvpara gerenciamento de variáveis de ambiente
O projeto utiliza uma estrutura modular baseada em camadas para isolar responsabilidades e aplicar injeção de dependências:
router/: Configuração de grupos de rotas e orquestração de dependências.handler/(Apresentação): Gerenciamento de requisições HTTP (Gin) e formatação de respostas.service/(Regras de Negócio): Camada central isolada, responsável pelas regras da aplicação.repository/(Acesso a Dados): Abstração do banco de dados utilizando GORM.schemas/: Definições de entidades do banco e structs de requisição/resposta.config/: Inicialização de banco de dados e logger customizado.
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/v1/opening |
Busca uma vaga por ID (via query param ?id=) |
| POST | /api/v1/opening |
Cria uma nova oportunidade |
| PUT | /api/v1/opening |
Atualiza dados de uma vaga (via query param ?id=) |
| DELETE | /api/v1/opening |
Remove uma vaga do sistema (via query param ?id=) |
| GET | /api/v1/openings |
Lista todas as vagas disponíveis |
A aplicação foi desenhada para rodar facilmente através do Docker, sem a necessidade de instalar o PostgreSQL localmente na sua máquina.
-
Clone o repositório:
git clone [https://github.com/Aaron-GMM/govagas](https://github.com/Aaron-GMM/govagas) cd govagas -
Variáveis de Ambiente: Crie um arquivo
.envna raiz do projeto e defina as credenciais do banco e a porta da API:PORT=8080 DB_HOST=db DB_PORT=5432 DB_USER=admin DB_PASSWORD=adminpassword DB_NAME=govagas_db
-
Executar a Aplicação: Levante os containers do PostgreSQL e da API utilizando o comando:
docker compose up --build -d
-
Acompanhar os Logs (Opcional):
docker compose logs -f api
A API estará disponível e escutando em http://localhost:8080.
Nota: Este projeto é uma Prova de Conceito (PoC) focada em boas práticas de arquitetura de software (Clean Arch, DI) no ecossistema Go.