API RESTful robusta desenvolvida inicialmente para gerenciar dados dos meus projetos, servindo como back-end centralizado para meu portifólio, mas tambem pode ser adaptado para seu ambiente!
🔗 Acesse a API em Produção (Azure)
☝️Pode demorar para inicializar pois usei estratégias de gerenciamento para redução de custos, mas depois de inicializado, funciona normalmente.
Este projeto demonstra a aplicação prática de Engenharia de Software Moderna, focando em arquitetura limpa, segurança e infraestrutura em nuvem.
O objetivo foi criar uma solução escalável onde:
- Leitura Pública: Recrutadores e interfaces Front-end podem consumir os dados livremente (
GET). - Escrita Protegida: Apenas administradores autenticados podem gerenciar o portfólio (
POST/PUT/DELETE). - Performance: Otimização de dados no PostgreSQL.
- Core: Java 21 & Spring Boot 4
- Database: PostgreSQL 17 (Gerenciado no Azure)
- ORM: Hibernate 7
- Security: Spring Security 6
- DevOps: Docker, Docker Compose & GitHub Actions (CI/CD)
- Cloud: Microsoft Azure App Service (Linux)
O sistema segue rigorosos padrões de mercado:
- Credenciais Seguras: Nenhuma senha está no código (hardcoded). Tudo é injetado via Variáveis de Ambiente no Azure.
- Stateless: A API não mantém estado de sessão, permitindo escalabilidade horizontal.
- Autenticação: Proteção de rotas críticas contra acesso não autorizado.
- Java 21+
- Docker & Docker Compose
# 1. Clone o repositório
git clone https://github.com/lucasgls/portifolio-api.git
# 2. Suba o banco de dados via Docker
docker-compose up -d
# 3. Configure as variáveis de ambiente no application.properties.example
# 4. Tranforme o application.properties.example > application.properties
# 5. Execute a aplicação
./mvnw spring-boot:run
| Método | Endpoint | Descrição | Auth |
|---|---|---|---|
POST |
/projetos |
Cria novo projeto | 🔒 Privada |
PUT |
/projetos/{id} |
Edita projeto | 🔒 Privada |
DELETE |
/projetos/{id} |
Deleta projeto | 🔒 Privada |
GET |
/projetos |
Lista dos projetos | 🔓 Pública |
GET |
/projetos{id} |
Exibe o único projeto | 🔓 Pública |
JSON de Criação (POST)
Rota: .../projetos
Body de criação:
{
"nome": "IAnalisador",
"descricao": "Usa openai API para processar curriculos e requisitos de vagas e escolher melhores candidato.s",
"tecnologias": "Python, Vite, Azure, OpenApi",
"urlsImagem": [
"https://foto0.png",
"https://foto1.png)"
]
}JSON de Edição (PUT)
Rota: .../projetos/{id}
Body de edição:
{
"nome": "IAnalisador",
"descricao": "Usa openai API para processar curriculos e requisitos de vagas e escolher melhores candidato.s",
"tecnologias": "Python, Vite, Azure, OpenApi",
"urlsImagem": [
"https://foto1.png",
"https://foto0.png)"
]
}