Skip to content

otaviorodriguess/mandae

Repository files navigation

Mandaê

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.

Recursos

  • Envio real pela Brevo e provedor fake em desenvolvimento
  • Fila em memoria com status PENDING, PROCESSING, SENT e FAILED
  • Ate tres tentativas por envio
  • Mensagens em texto ou HTML
  • Templates e historico no localStorage do navegador
  • Rate limit configuravel, CORS, validacao, Swagger e health check
  • Deploy separado: frontend no Vercel e API no Render

Rodar localmente

.\mvnw.cmd spring-boot:run

Abra 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.ps1

API

Criar 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

Publicar

1. Backend no Render

Conecte o repositorio no Render usando o Blueprint render.yaml e informe:

  • BREVO_API_KEY
  • BREVO_SENDER_EMAIL
  • ALLOWED_ORIGINS: URL final do frontend, por exemplo https://mandae.vercel.app

Copie a URL criada pelo Render.

2. Frontend no Vercel

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.

Verificacao

.\mvnw.cmd test
.\mvnw.cmd package -DskipTests

O GitHub Actions executa mvn verify em pushes para main e pull requests.

Limitacoes sem banco

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.

About

Aplicacao moderna para criar, visualizar e enviar emails com Spring Boot e Brevo.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages