Projeto pessoal para composicao e envio de emails com Spring Boot e Brevo. A interface possui preview, templates e historico local. A API processa envios em segundo plano, repete falhas temporarias e limita o uso por IP.
- Envio real pela Brevo e provedor fake em desenvolvimento
- Fila em memoria com status
PENDING,PROCESSING,SENTeFAILED - Ate tres tentativas por envio
- Mensagens em texto ou HTML
- Templates e historico no
localStoragedo navegador - Rate limit configuravel, CORS, validacao, Swagger e health check
- Deploy separado: frontend no Vercel e API no Render
.\mvnw.cmd spring-boot:runAbra http://localhost:8080. No perfil padrao o envio e simulado.
Para envio real, copie .env.example para .env, preencha os dados da Brevo e execute:
.\run-prod.ps1Criar um envio assincrono:
POST /email/jobs
Content-Type: application/json
{
"to": "cliente@example.com",
"subject": "Bem-vindo",
"body": "Ola!",
"html": false
}Consultar o resultado: GET /email/jobs/{id}.
- Swagger:
http://localhost:8080/swagger-ui.html - Health:
http://localhost:8080/actuator/health
Conecte o repositorio no Render usando o Blueprint render.yaml e informe:
BREVO_API_KEYBREVO_SENDER_EMAILALLOWED_ORIGINS: URL final do frontend, por exemplohttps://mandae.vercel.app
Copie a URL criada pelo Render.
Edite src/main/resources/static/config.js e coloque a URL do Render:
window.MANDAE_CONFIG = {
apiUrl: "https://manda-api.onrender.com"
};Depois importe o mesmo repositorio no Vercel. O arquivo vercel.json publica apenas a interface estatica.
O plano gratuito do Render pode hibernar. O primeiro envio depois de um periodo parado pode levar alguns segundos.
.\mvnw.cmd test
.\mvnw.cmd package -DskipTestsO GitHub Actions executa mvn verify em pushes para main e pull requests.
O historico pertence ao navegador de cada visitante. Jobs em andamento desaparecem se o backend reiniciar. Isso mantem a demo simples e gratuita; para uso comercial, o passo seguinte seria adicionar PostgreSQL e uma fila persistente.