Back to directory
matheusgmello avatar
matheusgmello / gestao-vagas

gestao-vagas

Sistema de gestão de empresas e vagas inspirado no LinkedIn, construido com Spring e Angular

8

Stars

0

Forks

1

Watchers

License

Gestao de Vagas

Projeto de portfolio que implementa uma plataforma de gestao de vagas com arquitetura baseada em microsservicos e frontend SPA:

  • Uma API REST em Spring Boot para cadastro, autenticacao e fluxo de candidaturas.
  • Uma aplicacao web Single Page Application (SPA) desenvolvida em Angular 18 (Standalone Components).
  • Servidor Nginx como proxy reverso para integrar Frontend e Backend no mesmo dominio (evitando problemas de CORS e portas separadas).

Funcionalidades principais

  • Cadastro e autenticacao de candidatos.
  • Cadastro e autenticacao de empresas.
  • Consulta de perfil do candidato autenticado.
  • Cadastro de vagas por empresas autenticadas.
  • Listagem de vagas publicadas pela empresa autenticada.
  • Busca de vagas para candidatos com filtro por texto.
  • Candidatura em vagas.
  • Interface web com telas separadas para candidato e empresa.
  • Documentacao da API com Swagger/OpenAPI.
  • Exposicao de metricas com Spring Boot Actuator e Prometheus.

Tecnologias utilizadas

Backend

  • Java 17
  • Spring Boot
  • Spring Web
  • Spring Data JPA
  • Spring Security
  • Spring Validation
  • PostgreSQL
  • H2 Database para testes
  • JWT com java-jwt
  • springdoc OpenAPI / Swagger UI
  • Spring Boot Actuator
  • Micrometer + Prometheus
  • JUnit, Mockito e Spring Security Test

Frontend

  • Angular 18 (Standalone Components, Signals)
  • SCSS
  • Nginx (Proxy reverso e Web Server)

Arquitetura do projeto

O repositorio esta dividido em dois modulos independentes:

  • backend/: API REST responsavel por regras de negocio, autenticacao JWT, persistencia e monitoramento.
  • frontend/: Aplicacao SPA Angular.

Toda a infraestrutura roda de forma conteinerizada via Docker Compose, com o Nginx escutando na porta 4200 e roteando:

  • / -> Frontend Angular
  • /api/ -> Backend Spring Boot (internamente porta 8080)

Como rodar localmente

Pre-requisitos

  • Docker e Docker Compose instalados na maquina.

Passo a passo

Na raiz do projeto, execute o comando para subir toda a stack (PostgreSQL, Backend Java e Frontend Nginx/Angular):

docker compose up -d --build

Isso sobe todos os servicos necessarios.

Para acessar o sistema:

  • Acesse a interface web em http://localhost:4200
  • A documentacao Swagger da API em http://localhost:4200/api/swagger-ui/index.html

Caso queira desenvolver localmente sem Docker para o frontend:

cd frontend
npm install
npm run start

(O frontend executara em http://localhost:4200 utilizando o proxy.conf.json interno do Angular CLI para redirecionar requests da /api para a porta local do backend, que deve estar rodando na 8080).

Configuracao de ambiente

As configuracoes principais se encontram no arquivo raiz docker-compose.yml, onde as variaveis de banco de dados e proxy de rede (DNS interno backend para Nginx) estao estabelecidas.

Testes

O backend possui testes automatizados em backend/src/test/java. Para executar:

cd backend
./mvnw test

Principais endpoints da API (Mapeados via /api/)

Candidato

  • POST /api/candidate/: cadastrar candidato
  • POST /api/candidate/auth: autenticar candidato
  • GET /api/candidate/: buscar perfil do candidato autenticado
  • GET /api/candidate/job?filter=texto: listar vagas filtradas
  • POST /api/candidate/job/apply: candidatar-se a uma vaga

Empresa

  • POST /api/company/: cadastrar empresa
  • POST /api/company/auth: autenticar empresa
  • POST /api/company/job/: criar vaga
  • GET /api/company/job/: listar vagas da empresa autenticada