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 candidatoPOST /api/candidate/auth: autenticar candidatoGET /api/candidate/: buscar perfil do candidato autenticadoGET /api/candidate/job?filter=texto: listar vagas filtradasPOST /api/candidate/job/apply: candidatar-se a uma vaga
Empresa
POST /api/company/: cadastrar empresaPOST /api/company/auth: autenticar empresaPOST /api/company/job/: criar vagaGET /api/company/job/: listar vagas da empresa autenticada