Aplicação full stack desenvolvida no bootcamp DevSuperior O projeto consiste em um backend Spring Boot e um frontend React (Vite + TypeScript) para consultar um relatório de vendas por período e enviar notificações via SMS (Twilio).
Observação: este repositório foi originalmente publicado no Heroku (plano gratuito). Como o plano gratuito foi descontinuado, a aplicação não está mais online. O código continua pronto para rodar localmente e pode ser implantado em qualquer plataforma que suporte Java/Node (Heroku, Render, Railway, etc.).
Backend
- Java 17
- Spring Boot
- Spring Data JPA
- Banco H2 em memória (dados iniciais em
import.sql) - Integração com Twilio (SMS)
Frontend
- React 18
- Vite
- TypeScript
- Axios
- React Datepicker
- React Toastify
backend/→ API REST + serviço de SMSfrontend/→ interface web (lista de vendas + filtro por datas)
- Java 17
- Node.js (recomendado 16+ ou 18+)
- (opcional) Yarn ou NPM
- (opcional) Conta Twilio para SMS
cd backend
./mvnw spring-boot:runA API sobe por padrão em: http://localhost:8080
Extras:
- Console do H2:
http://localhost:8080/h2-console- JDBC URL:
jdbc:h2:mem:testdb - user:
sa - senha: (vazia)
- JDBC URL:
Em outro terminal:
cd frontend
npm install
npm run devA aplicação abre (geralmente) em: http://localhost:5173
O frontend usa a variável VITE_BACKEND_URL (com fallback para http://localhost:8080).
O endpoint de notificação chama o Twilio. Para habilitar o envio de SMS, defina as variáveis abaixo no ambiente do backend:
TWILIO_SIDTWILIO_KEYTWILIO_PHONE_FROMTWILIO_PHONE_TO
Sem essas variáveis, o endpoint de notificação pode falhar (dependendo do comportamento do Twilio / credenciais).
-
GET /sales?minDate=YYYY-MM-DD&maxDate=YYYY-MM-DD
Retorna vendas paginadas e filtradas por período. -
GET /sales/{id}/notification
Envia SMS para a venda informada (Twilio).
Exemplo:
curl "http://localhost:8080/sales?minDate=2022-01-01&maxDate=2022-12-31"O projeto já contém system.properties no backend (útil em PaaS como Heroku para fixar a versão do Java).
Uma estratégia comum:
- Publicar o backend (Java) em um PaaS (Heroku/Render/Railway).
- Publicar o frontend como site estático (Vercel/Netlify) ou no mesmo PaaS.
- No frontend, configurar
VITE_BACKEND_URLapontando para a URL pública do backend. - No backend, configurar as variáveis do Twilio como Config Vars (se for usar SMS).
Afonso Benintendi da Silveira
Bootcamp DevSuperior – DS Meta